为什么SQL查询在PHP中的执行速度比在查询分析器中慢

时间:2010-09-02 09:31:49

标签: php sql-server

我有一个在SQL Server Managment Studio中运行需要5秒的查询,但在PHP中使用 $ qid = db_query($ countQuery)运行相同的查询需要33秒; 有谁知道为什么会这样?

我们使用的是SQL Server 2000,我认为不是问题所在。

[编辑] 在进行一些分析后,我们注意到分析器和PHP查询之间的执行计划完全不同。这是在一台机器,web,sql和查询分析器上完成的。

任何想法?

由于

4 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

众所周知,这是基于不同的会话设置而发生的。就像set ansi_nulls的不同设置或不同的登录名一样。

此外,有时连接计划已过时,但仍用于旧连接。要查看是否存在问题,请使用以下命令清除计划缓存:

DBCC FREEPROCCACHE

答案 2 :(得分:0)

我遇到的情况是,在我执行查询的Sql登录时,性能有所不同。从查询分析器以sysadmin身份运行查询时,查询比应用程序以不同的sql用户身份运行时更快。

这可能无法解决您的问题,但这可以在用完想法时进行检查。

答案 3 :(得分:0)

好的,我发现了问题......好吧,至少在这种情况下。问题是随PHP一起提供的mssql_ *。我们测试了新的sqlsrv_ *,它在1.4秒内运行了62秒的查询(mssql_),所以它肯定要快得多。

[编辑]
它在mssql库中运行缓慢的原因是因为我们表中的重复数据(它只有两个没有任何约束的id列,因此我们从未注意到它)。

感谢所有的建议!