博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL Server性能优化(12)非聚集索引的组合索引存储结构
阅读量:6672 次
发布时间:2019-06-25

本文共 774 字,大约阅读时间需要 2 分钟。

一,非聚集索引组合索引

用户可以在多个列上建立索引,这种索引叫做复合索引(组合索引)。但复合索引在数据库操作期间所需的开销更小,可以代替多个单一索引。当表的行数远远大于索引键的数目时,使用这种方式可以明显加快表的查询速度。

同时有两个概念叫做窄索引和宽索引,窄索引是指索引列为1-2列的索引,如果不特殊说明的话一般是指单一索引。宽索引也就是索引列超过2列的索引。
设计索引的一个重要原则就是能用窄索引不用宽索引,因为窄索引往往比组合索引更有效。拥有更多的窄索引,将给优化程序提供更多的选择余地,这通常有助于提高性能。

/****** Object:  Index [NonIxUser]    Script Date: 05/25/2015 09:03:01 ******/ CREATE NONCLUSTERED INDEX [NonIxUser] ON [dbo].[Users] (     [NAME] ASC,     [ID] ASC ) GO

或者在GUI里

二、组合索引的根节点结构

首先查看该表的物理结构

--开启跟踪标志 DBCC TRACEON(3604,2588) --DBCC TRACEOFF(3604,2588) ---获取对象的数据页,结构:数据库、对象、显示 DBCC IND(Ixtest,users,-1)

在查看第一个索引叶子节点的内容

DBCC page(IxTest,1,201,3)

注:

1. 组合索引查询不包含的列时,还是会走RID查询。

2. 如果是Include的索引,同样会在索引叶子节点里多相关的列,但是其列头上不包含(Key)这个关键字。如下

 

参考:

MSDN上关于包含列列数限制的描述:

转载于:https://www.cnblogs.com/ustcyc/p/4527089.html

你可能感兴趣的文章
vi命令集
查看>>
oracle数据库克隆
查看>>
输出 pdf
查看>>
PHPCMS一个BUG
查看>>
APP云测试
查看>>
3-unit3 高速缓存DNS
查看>>
spark mllib 协同过滤算法,基于余弦相似度的用户相似度计算
查看>>
openwrt 基于qmi的 3G|4G拨号
查看>>
俞敏洪励志语
查看>>
开源|基于TensorFlow的聊天机器人-ErGo
查看>>
lucene4.0入门1
查看>>
Svn结合hook实现自动更新及多Project管理更新
查看>>
第三十六讲:tapestry表单组件详解之PasswordField
查看>>
Ubuntu11.10下安装JDK+Eclipse+Maven
查看>>
sgu 222
查看>>
让spring-data-jpa解放你的DAO
查看>>
58沈剑:架构师的平凡之路
查看>>
Hibernate问题-read-write缓存策略
查看>>
C/C++语言中“:”的使用方法
查看>>
sql中实现汉字的拼音首字母查询
查看>>