2008-08-10 76 views

回答

4

我想我讀了一個地方,SQL Server 2005數據庫引擎應該比SQL Server 2000引擎快大約30%。可能是,您必須以兼容模式運行數據庫才能獲得這些好處。

但我無意中發現了兩個方案,在性能可以使用MSSQL 2005年相比,MSSQL 2000年顯着下降:

  1. 參數嗅探:當使用存儲過程時,SQL Server將計算正好一個執行計劃的時間,你第一次打電話給程序。執行計劃取決於爲該調用提供的參數值。在我們的例子中,通常需要大約10秒的過程在mssql 2005下運行幾個小時。請看一下herehere

  2. 當使用分佈式查詢時,mssql 2005在有關遠程服務器上排序順序的假設方面表現不同。默認行爲是,服務器將查詢中涉及的所有遠程表複製到本地tempdb,然後在本地執行聯接。解決方法是使用OPENQUERY,您可以在其中準確控制從遠程服務器傳輸的結果集。

2

在您將DB移至2005年後您是否

更新了全面掃描的統計數據? 重建索引?

首先嚐試,然後再檢查性能

1

而且FYI一個,如果您運行兼容級別90則有些事情是不能支持不再像舊風格的外連接(*= and =*)

1

是否使用子選擇在你的疑問?

根據我的經驗,在SQL Server 2000上運行正常的子查詢的SELECT語句可以在SQL Server 2005上爬行(它可以慢10倍!)。

做一個實驗 - 重新編寫一個查詢來消除子查詢並查看其性能如何變化。

相關問題