我有一个在SQL Server Managment Studio中运行需要5秒的查询,但在PHP中使用 $ qid = db_query($ countQuery)运行相同的查询需要33秒; 有谁知道为什么会这样?
我们使用的是SQL Server 2000,我认为不是问题所在。
[编辑] 在进行一些分析后,我们注意到分析器和PHP查询之间的执行计划完全不同。这是在一台机器,web,sql和查询分析器上完成的。
任何想法?
由于
答案 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列,因此我们从未注意到它)。
感谢所有的建议!