SQL优化实战:排序字段

http://tech.ddvip.com   2008年08月27日    社区交流

内容摘要:省掉排序的操作。有时候,排序和时间是有相关性的,而聚集索引,没有建在时间上,会导致排序成本的增加,恰当的利用自增ID来做时间排序,也能省掉很多开销。

  查到有这样一段话,很耗CPU资源:

Code
setstatisticsioon
setstatisticstimeon
SELECTTOP10FeedBackID,UserID,ContentID,[Content],
Time,AddType,IPFROMCYZoneFeedBack
wherecontentidin(selectarticleidfromcyzonearticlewhereuserid=@useranddelflag=0andpublishtype<>'b')
andCYZoneFeedBack.DelFlag=0orderbyCYZoneFeedBack.Timedesc

  分析是这样的:

SQL优化实战:排序字段

  原来是排序造成了这么多开销。罪魁祸首在于 order by CYZoneFeedBack.Time 这句话,后改成: 

Code
setstatisticsioon
setstatisticstimeon
SELECTTOP10FeedBackID,UserID,ContentID,[Content],
Time,AddType,IPFROMCYZoneFeedBack
wherecontentidin(selectarticleidfromcyzonearticlewhereuserid=107anddelflag=0andpublishtype<>'b')
andCYZoneFeedBack.DelFlag=0orderbyCYZoneFeedBack.feedbackiddesc

  执行计划变为:

SQL优化实战:排序字段

  很明显省掉了排序的操作。有时候,排序和时间是有相关性的,而聚集索引,没有建在时间上,会导致排序成本的增加,恰当的利用自增ID来做时间排序,也能省掉很多开销。

作者:perfectdesign    责编:豆豆技术应用

正在加载评论...