Sql Server 性能优化之包含列

系统 1762 0

Sql Server 性能优化之包含列

 

     导读:数据数优化查询一直是个比较热门的话题,小生在这方面也只能算是个入门生。今

天我们就讲下数据库 包含列 这个一项的作用及带来的优化效果

    

      引用下MSDN里面的一段解释:

 

      当查询中的所有列都作为键列或非键列包含在索引中时,带有包含性非键列的索引可以显

著提高查询性能。 这样可以实现性能提升,因为查询优化器可以在索引中找到所有列值;不

访问表或聚集索引数据,从而减少磁盘 I/O 操作

  

       上面这一段什么意思呢?

 

      意思就是说设置好包含列,能提高查询性能,减少IO输出。

      这样说大家都觉得很抽象,下面我们举个例子来说明这个包含列的效果,

 

       如何创建包含列索引?

 

       1、 在对象资源管理器中,单击加号以便展开包含您要创建带有非键列的索引的表的数据库。

       2、 单击加号以便展开“表”文件夹。

       3、单击加号以便展开您要创建带有非键列的索引的表。

       4、右键单击“索引”文件夹,指向“新建索引”,然后选择“非聚集索引…”。

       5、 在“新建索引”对话框的“常规”页中,在“索引名称”框中输入新索引的名称。

       6、 在“索引键列”选项卡下,单击“添加…”。

        7、在“从 table_name 中选择列”对话框中,选中要添加到索引的一个或多个表列的复选框。

       8、 单击“确定”。

       9、 在“包含性列”选项卡下,单击“添加…”。

       10、 在“从 table_name 中选择列”对话框中,选中要作为非键列添加到索引的一个或多个表列的复选框。

       11、 单击“确定”。

       12、 在“新建列”对话框中,单击“确定”。

 

     举个例子来说明这个包含列的效果

    

      SQL:select Sex from User Where UserName='小三'

  

     我们来看下上面的语句 根据UserName来查询小三的性别,加入我们表中没有建任何索引,如果数据比较少的话 这个查询语句是没有任何问题的,但是当我们的用户量到达上千万时,这个查询可能就没当初那么快了,这个时候怎么提高查询效率呢?

     

      建立非聚集索引

 

     第一个方法:给UserName建立非聚集索引,建立了索引之后数据库就能更快的找到这条数据所存在的位置。

 

     建立索引包含列

    

     第二个方法:在给UserName建立非聚集索引的同时,建议包含列,包含Sex这一列,这样在快速定位UserName的同时又能很快定位出Sex的物理位置。包含列是对查询条件后的一种性能补充。 

     

     适用场景:该条查询用的非常频繁。 select age from User Where UserName='小三'

比如在查询UserName的同时查询age非常多 就可以考虑给UserName建立非聚集索引的时候包含age这一列。

 

    附上:建立包含列的SQL语句

    

1
2
3
4
5
6
7
8
9
USE AdventureWorks2012;
GO
-- Creates a nonclustered index on the Person.Address table with four included (nonkey) columns. 
-- index key column is PostalCode and the nonkey columns are
-- AddressLine1, AddressLine2, City, and StateProvinceID.
CREATE   NONCLUSTERED  INDEX   IX_Address_PostalCode
ON   Person.Address (PostalCode)
INCLUDE (AddressLine1, AddressLine2, City, StateProvinceID);
GO

 

  同时欢迎到我的个人博客上做客: http://www.diyibk.com/post/140.html

Sql Server 性能优化之包含列


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论