2010-09-02 80 views
2

我有一个查询需要5秒钟才能在SQL Server Managment Studio中运行,但在PHP中需要33秒才能运行相同查询,使用$ qid = db_query ($ countQuery); 有没有人知道为什么这可能是?为什么在查询分析器中执行的SQL查询执行速度较慢

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

做了一些分析后,我们注意到分析器和PHP查询之间的执行计划完全不同。这是在一台机器,Web,SQL和查询分析器上完成的。

任何想法?

谢谢

+0

你从同一台机器测试过吗? – Gordon 2010-09-02 09:33:10

+8

你是否在同一个数据库上运行它?有没有人向数据库添加数据?查询分析器不是在本地运行,而是远程运行的PHP脚本(因此数据必须在网络上传输)? – 2010-09-02 09:34:41

+1

您只是在讨论查询 - 没有数据被提取到PHP脚本中? – 2010-09-02 09:37:06

回答

0

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

[编辑]
它的原因在MSSQL库运行速度慢是因为在我们的表中的重复数据(其中只有两个ID列不受任何约束的,所以我们从来没有注意到这一点)。

感谢您的所有建议!

0

这是根据不同的会话设置而发生的。如同set ansi_nulls的不同设置或不同的登录名称。

此外,有时连接计划已过时,但仍用于旧连接。要看看是否是这个问题,请清除计划缓存:

DBCC FREEPROCCACHE 
0

我遇到过Sql登录时,我执行查询的情况在性能上有所不同。当从查询分析器以sysadmin身份运行查询时,查询速度比应用程序将其作为另一个SQL用户运行时要快。

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