我有一个查询需要5秒钟才能在SQL Server Managment Studio中运行,但在PHP中需要33秒才能运行相同查询,使用$ qid = db_query ($ countQuery); 有没有人知道为什么这可能是?为什么在查询分析器中执行的SQL查询执行速度较慢
我们正在使用SQL Server 2000,我不认为这是问题。
做了一些分析后,我们注意到分析器和PHP查询之间的执行计划完全不同。这是在一台机器,Web,SQL和查询分析器上完成的。
任何想法?
谢谢
我有一个查询需要5秒钟才能在SQL Server Managment Studio中运行,但在PHP中需要33秒才能运行相同查询,使用$ qid = db_query ($ countQuery); 有没有人知道为什么这可能是?为什么在查询分析器中执行的SQL查询执行速度较慢
我们正在使用SQL Server 2000,我不认为这是问题。
做了一些分析后,我们注意到分析器和PHP查询之间的执行计划完全不同。这是在一台机器,Web,SQL和查询分析器上完成的。
任何想法?
谢谢
好吧,我发现问题......至少在这种情况下。问题是PHP附带的mssql_ *。我们测试了新的sqlsrv_ *,它在1.4秒内运行了62秒的查询(mssql_),所以它肯定快得多。
[编辑]
它的原因在MSSQL库运行速度慢是因为在我们的表中的重复数据(其中只有两个ID列不受任何约束的,所以我们从来没有注意到这一点)。
感谢您的所有建议!
不,我不是。谢谢。 – Pieter 2010-09-03 07:54:05
这是根据不同的会话设置而发生的。如同set ansi_nulls
的不同设置或不同的登录名称。
此外,有时连接计划已过时,但仍用于旧连接。要看看是否是这个问题,请清除计划缓存:
DBCC FREEPROCCACHE
我遇到过Sql登录时,我执行查询的情况在性能上有所不同。当从查询分析器以sysadmin身份运行查询时,查询速度比应用程序将其作为另一个SQL用户运行时要快。
这可能无法解决您的问题,但在缺少想法时可以进行检查。
你从同一台机器测试过吗? – Gordon 2010-09-02 09:33:10
你是否在同一个数据库上运行它?有没有人向数据库添加数据?查询分析器不是在本地运行,而是远程运行的PHP脚本(因此数据必须在网络上传输)? – 2010-09-02 09:34:41
您只是在讨论查询 - 没有数据被提取到PHP脚本中? – 2010-09-02 09:37:06