2010-09-02 75 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用戶運行時要快。

這可能無法解決您的問題,但在缺少想法時可以進行檢查。