查到有這樣一段話,很耗cpu資源:
code
setstatistics
io on
setstatistics
time
onselect
top10
feedbackid,userid,contentid,
[content
],
time,addtype,ip
from
cyzonefeedback
where
contentid in(
select
articleid
from
cyzonearticle
where
userid
=@user
anddelflag=0
andpublishtype
<>'b
')andcyzonefeedback.delflag =0
order
bycyzonefeedback.time
desc
分析是這樣的:
原來是排序造成了這麼多開銷。罪魁禍首在於 order by cyzonefeedback.time 這句話,後改成:
code
setstatistics
io on
setstatistics
time
onselect
top10
feedbackid,userid,contentid,
[content
],
time,addtype,ip
from
cyzonefeedback
where
contentid in(
select
articleid
from
cyzonearticle
where
userid
=107
anddelflag=0
andpublishtype
<>'b
')andcyzonefeedback.delflag =0
order
bycyzonefeedback.feedbackid
desc
執行計畫變為:
很明顯省掉了排序的操作。有時候,排序和時間是有相關性的,而聚集索引,沒有建在時間上,會導致排序成本的增加,恰當的利用自增id來做時間排序,也能省掉很多開銷。
SQL欄位拆分優化
今天看到一條用函式處理連線的sql,是群裡某位的,sql語句如下 select so order.fdate so order.fsn from so order inner join so orderitem on charindex so orderitem.fid,so order.fid 1...
sql優化實戰筆記
目錄 文章目錄 前言sql語句優化 一 in和exists哪個效率高 in 和exists not in 和not exists 二 查詢條件哪個在前哪個在後 三 sql優化之如何改造or 總結 sql優化實戰筆記 先看這兩條sql,哪個效率更高呢?select from t a a where a...
SQL語句實現多欄位排序
一 sql語句實現單字段降序 公升序 select a.from a order by a.id 預設情況下,一般是公升序 關鍵字公升序是asc,降序為desc 二 sql語句實現多欄位降序 select a.from a order by a.id desc,a.num desc 三 sql語句實...