分析SQL語句的效能

2021-04-19 22:16:32 字數 2134 閱讀 8687

由於要分析sql profiler捕獲的sql 語句的效能,需要找出執行頻率高,用時長的語句。

sql profiler生成的表如下:

create table [dbo].[lijidownload](

[rownumber] [

int] identity(

,) not null,

[eventclass] [

int] null,

[textdata] [ntext] collate sql_latin1_general_cp1_ci_as null,

128) collate sql_latin1_general_cp1_ci_as null,

[ntusername] [nvarchar](

128) collate sql_latin1_general_cp1_ci_as null,

[loginname] [nvarchar](

128) collate sql_latin1_general_cp1_ci_as null,

[cpu] [

int] null,

[reads] [bigint] null,

[writes] [bigint] null,

[duration] [bigint] null,

[clientprocessid] [

int] null,

[spid] [

int] null,

[starttime] [datetime] null,

[binarydata] [image] null,

[sumindex] [

int] null,

---為了分析加入的

primary key clustered

([rownumber] asc

)with (ignore_dup_key

=off) on [primary]

) on [primary] textimage_on [primary]

由於text型別的資料不能比較和做group等運算。所以引入sumindex列來識別相同的textdata值。

生成sumindex列的資料:

update lijidownload 

setsumindex

=checksum(substring(textdata,

,500

))

500 :可以指定為捕獲的sql 語句的最大長度。

找出使用頻率最高的前10條語句:

select top 

10sumindex,count(sumindex)

asusedmuch

into #temp

from lijidownload

group by sumindex

order by usedmuch desc

select distinct t.usedmuch,substring(l.textdata,

,500

astextdata

from #temp t inner join lijidownload l

on t.sumindex

=l.sumindex

order by t.usedmuch desc

找出總用時最高的前10條語句

select distinct substring(l.textdata,

,500

astextdata,b.totalduration

from lijidownload l inner join

(select top

10sum(duration)

astotalduration,sumindex from lijidownload

where eventclass=41

--型別為sql語句

group by sumindex

order by totalduration desc) b

on l.sumindex

=b.sumindex

order by b.totalduration desc

分析SQL語句的效能

1.檢視執行時間和cpu占用時間 set statistics time on select from 表set statistics time off 結果 2.檢視查詢對i 0的操作情況 set statistics io on select from 表set statistics io of...

利用EXPLAIN分析sql語句的效能

使用explain關鍵字可以模擬優化器執行sql查詢語句,從而知道mysql是如何處理你的sql語句,可以幫助選擇更好的索引和寫出更優化的查詢語句。explain 的每個輸出行包括下面的列 select查詢的序列號,包含一組數字,表示查詢中執行select子句或操作表的順序。有三種情況 select...

mysql 語句 效能 mysql語句效能分析

id id列數字越大越先執行,id列為null的就表是這是乙個結果集 select type 表示不需要union操作或者不包含子查詢的簡單select查詢。有連線查詢時,外層的查詢為 且只有乙個 primary 乙個需要union操作或者含有子查詢的select,位於最外層的單位查詢的select...