2010-02-22 44 views
3

我確實在sp上使用的表上創建了兩個新索引。 新的結果表明,在有問題的聯接部分,掃描轉換爲seek。我認爲尋求更好,而不是掃描操作。另一方面,時間與沒有新索引所需的時間大致相同。比較存儲過程性能ex和新版本

很清楚,在將我的新版本sp投入生產之前,我該如何才能滿意。

例如,更改sp的參數可以幫助我看看新版本是否比舊版本更快或者還有其他什麼?

問候 BK

+0

我假設你使用的是SQL Server? – AdaTheDev 2010-02-22 13:58:52

+0

SQL Server 2005 – theklc 2010-02-22 14:22:15

回答

5

有幾件事情要做:
1)確保您通過每個測試運行後清除數據和執行計劃緩存還算比較性能。您可以使用(建議僅做這在你的開發/測試環境)中清除這些下來:

CHECKPOINT -- force dirty pages in the buffer to be written to disk 
DBCC DROPCLEANBUFFERS -- clear the data cache 
DBCC FREEPROCCACHE -- clear the execution plan cache 

2)運行SQL事件探查器記錄的讀取/寫入/ CPU /時間對於每一種情況(有/無索引)。這將給你一系列的指標進行比較(即與SSMS中顯示的時間相對)。
編輯: 要運行SQL事件探查器跟蹤,請在Management Studio中轉至工具 - > SQL Server事件探查器。當出現提示時,指定數據庫服務器運行跟蹤。將出現一個「Trace Properties」對話框 - 您應該只需點擊「Run」即可開始運行默認跟蹤。然後只需執行你的存儲過程,並看到它出現在SQL Profiler中 - 它將顯示持續時間,讀取數量等。

3)測試的數據量比你現有的要多得多。如果您使用少量數據進行測試,那麼僅憑持續時間往往難以看出差異。

我最近blogged here關於如何公平測試查詢的不同變體的性能,後者詳細介紹了我如何去做。

+0

謝謝阿達, 請您擴展上面的第二項。 問候 BK – theklc 2010-02-22 14:25:42

+0

@blgnklc - 做:) – AdaTheDev 2010-02-22 14:45:49

+0

我一直在做以上項目, 但項目作爲一個你在你的博客中提到比較喜歡2個報童,看看哪一個能完成給定的輪最快沒有工作。明確的方法似乎沒有解決。一旦我運行SP舊版本,那麼第一次需要很多時間,我使用clear方法來運行SP新版本。 另一方面,當我再次清除並且第二次運行SP舊版本時,它花費的時間很少。 第一次,對於舊版SP:4:24分 第二次,對於舊版SP:0:18分 我錯過了什麼嗎? – theklc 2010-02-23 15:42:47