SQL Server 非聚集索引的覆盖,连接,交叉和过滤 (第二篇)

本文详细介绍了SQL Server中非聚集索引的概念和应用,包括非聚集索引的INCLUDE(覆盖索引)、连接、交叉和过滤。通过示例说明了如何通过INCLUDE增加索引的覆盖性,减少了查询基本表的需求,提高了查询效率。同时探讨了索引交叉和过滤在优化查询性能中的作用。
摘要由CSDN通过智能技术生成

 

在SQL Server中,非聚集索引其实可以看做是一个含有聚集索引的表,但相对实际的表来说,非聚集索引中所存储的表的列数要少得多,一般就是索引列,聚集键(或RID)。非聚集索引仅仅包含源表中的非聚集索引的列和指向实际物理表的指针。

一、非聚集索引之INCLUDE

  非聚集索引其实可以看做一个含有聚集索引的列表,当这个非聚集索引中包含了查询所需要的所有信息的时候,则就不再需要去查基本表,仅仅做非聚集索引就能够得到所需要的数据。INCLUDE实际上也能称为覆盖索引,但它不影响索引键的大小。

  先来看下面一张表:

  

  此表大约是15万数据左右。聚集索引列是Id,我们先来在Name列建立一个非聚集索引。

 
  1.   CREATE NONCLUSTERED

  2.   INDEX Index_Name ON Person(Name)

  然后执行查询:

  SELECT Name,Age FROM Person where Name = '欧琳琳'

  执行计划如下:

  

  上面的执行过程是,先扫描非聚集索引列,找到聚集索引,然后在通过聚集索引定位到数据。

  下面我们删除掉刚才那个索引,再建过另外一个。

 
  1.   DROP INDEX Person.Index_Name --删除非聚集索引Index_Name

  2.  
  3.   CREATE NONCLUSTERED --再重新建过一次,这次我们INCLUDE Age列

  4.   INDEX Index_Name ON Person(Name

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值