我有一個查詢需要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