[轉]SQLServer SQL執行效率和性能測試方法總結


本文轉自:http://www.zhixing123.cn/net/27495.html

對於做管理系統和分析系統的程序員,復雜SQL語句是不可避免的,面對海量數據,有時候經過優化的某一條語句,可以提高執行效率和整體運行性能。

如何選擇SQL語句,本文提供了兩種方法,分別對多條SQL進行量化的分析。

在測試SQL性能的過程中。

一是通過設置STATISTICS查看執行SQL時的系統情況。

選項有PROFILE,IO ,TIME。 SET STATISTICS PROFILE ON:顯示分析、編譯和執行查詢所需的時間(以毫秒為單位)。

SET STATISTICS IO ON:報告與語句內引用的每個表的掃描數、邏輯讀取數(在高速緩存中訪問的頁數)和物理讀取數(訪問磁盤的次數)有關的信息。

SET STATISTICS TIME ON:顯示每個查詢執行后的結果集,代表查詢執行的配置文件。

實例如下:

SET STATISTICS PROFILE ON

SET STATISTICS IO ON

SET STATISTICS TIME ON

GO

–你的SQL腳本開始

SELECT [TestCase] FROM [TestCaseSelect]

–你的SQL腳本結束

GO

SET STATISTICS PROFILE OFF

SET STATISTICS IO OFF

SET STATISTICS TIME OFF

 

另外,也可以通過手工添加語句,計算執行時間來查看執行語句花費了的時間,以判斷該條SQL語句的效率如何:

declare @d datetime set @d=getdate()

–你的SQL腳本開始

SELECT [TestCase] FROM [TestCaseSelect]

–你的SQL腳本結束

select [語句執行花費時間(毫秒)]=datediff(ms,@d,getdate())

 

二是通過SQL 2008的“查詢”按鈕下的“包括實際的執行計划”和“包括客戶端統計信息”。

下面是我和經理寫的兩個例子的性能對比:

我的:

SQL Server 執行時間:

CPU 時間= 32 毫秒,占用時間= 762 毫秒。

CPU 時間= 16 毫秒,占用時間= 475 毫秒。

CPU 時間= 32 毫秒,占用時間= 671 毫秒。

CPU 時間= 31 毫秒,占用時間= 615 毫秒。

經理的:

SQL Server 執行時間:

CPU 時間= 16 毫秒,占用時間= 547 毫秒。

CPU 時間= 47 毫秒,占用時間= 491 毫秒。

CPU 時間= 32 毫秒,占用時間= 436 毫秒。

CPU 時間= 47 毫秒,占用時間= 416 毫秒。

PS:今天在做一道題目的時候,經理給出的一道難題,雖然做出來了,但是性能沒有做到最優化。

其中用到了三層嵌套。

現在特別是要總結的:大表跟小表進行關聯查詢 時,涉及到嵌套查詢,先查詢小表,然后再聯合大表。

我是一開始讓大小表進行關聯,然后再嵌套。而經理寫的是先讓小表嵌套,最后在關聯。這樣,執行效率自然要比我高

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM