1
我看不出執行計劃有什麼問題。此外,據我所知,SQL Server 2000通過識別與現有執行計劃的T-SQL語句相關的新T-SQL語句,將存儲過程的許多性能優勢擴展到所有SQL語句中(通過保留對所有SQL語句的執行計劃過程高速緩存,而不僅僅是存儲過程執行計劃)爲什麼在不使用存儲過程時SQL可以更快地在SQL Server 2000上執行?
這是一個相當直接的SELECT語句,具有敏感的表連接,沒有包含事務或在查詢中引用鏈接的服務器,並且應用了WITH(NOLOCK)表提示。存儲過程由dbo創建,用戶具有所有必需的權限。
所以我的問題是這樣的:
什麼是可能的原因時,相同的T-SQL通過存儲過程運行查詢來只需要幾秒鐘就可以運行,但隨後需要幾分鐘?
這發生在特定服務器上的特定數據庫上,併爲相當多的存儲過程這樣做。丟棄/重新創建沒有效果。使用參數化值運行查詢ala NHibernate通常工作得更好(對於我運行的測試),所以這看起來與任何特定值都沒有關係。這是製作和「工作」,但這是我想揭穿的東西。 – 2010-04-14 23:02:55