對於做管理系統和分析系統的程式設計師,複雜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指令碼結束
goset 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的「查詢」按鈕下的「包括實際的執行計畫」和「包括客戶端統計資訊」。
下面是我和經理寫的兩個例子的效能對比:
ps:今天在做一道題目的時候,經理給出的一道難題,雖然做出來了,但是效能沒有做到最優化。其中用到了三層巢狀。現在特別是要總結的:大表跟小表進行關聯查詢 時,涉及到巢狀查詢,先查詢小表,然後再聯合大表。我是一開始讓大小表進行關聯,然後再巢狀。而經理寫的是先讓小表巢狀,最後在關聯。這樣,執行效率自然要比我高
SQL語句執行效率及效能測試
寫程式的人,往往需要分析所寫的sql語句是否已經優化過了,伺服器的響應時間有多快,這個時候就需要用到sql的statistics狀態值來檢視了。通過設定statistics我們可以檢視執行sql時的系統情況。選項有profile,io time。介紹如下 set statistics profile...
SQL語句執行效率及效能測試
寫程式的人,往往需要分析所寫的sql語句是否已經優化過了,伺服器的響應時間有多快,這個時候就需要用到sql的statistics狀態值來檢視了。通過設定statistics我們可以檢視執行sql時的系統情況。選項有profile,io time。介紹如下 set statistics profile...
如何測試sql語句效能,提高執行效率
有時候我們經常為我們的sql語句執行效率低下發愁,反覆優化後,可還是得不到提高 那麼你就用這條語句找出你sql到底是在 慢了 示例 set statistics io on set statistics time on go 你要測試的sql語句 select top 100 from tbl co...