sql優化實戰 排序字段 到底是time還是ID

2022-02-18 13:28:28 字數 1254 閱讀 9972

查到有這樣一段話,很耗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語句實...