Order by 字段加在索引何处

             Order by字段有时看到SQL SERVER给出的索引中会加在索引的Include里面,我则比较喜欢加在条件字段的尾部,今日测试对比了一下。

             有一个查询语句如下:

             SELECT TOP 5 id,name,BizOfferTypeId,TradingServiceType FROM [table]  WITH (NOLOCK) 

                 WHERE ((gameid='5865420422194d68947c3d4b79a83204'))   ORDER BY CreatedDate DESC

            创建了如下索引:

          create index ix_120302_test on [table](gameid,CreatedDate)

              include(id,name,BizOfferTypeId,TradingServiceType) with(online=on) on idx1

    

          执行结果如下:

          表 。扫描计数 17,逻辑读取 6620 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

         然后创建了如下索引:

        create index ix_120302_test on [BizOfferSearchBy040E](gameid,CreatedDate)

        include(id,name,BizOfferTypeId,TradingServiceType) with(online=on) on idx1

        表 。扫描计数 1,逻辑读取 3 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

     

     两者重要的区别是执行计划发生了较大的该表,使用第一种索引的时候,排序占用了不少的资源,第二种省去了排序的环节。这可能类似于Mysql 中排序算法的区别,是

     先 排序再返回数据,还是先返回数据,再排序。很明显,先排序再返回数据对IO优化有益。

      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值