【SQL SERVER】索引

【SQL SERVER】索引

通过将非键列添加到非聚集索引的叶级,扩展非聚集索引的功能。 通过包含非键列,可以创建覆盖更多查询的非聚集索引

通过把包含的列同时维护在索引页,达到当查询的数据都包含在索引中的数据的时候,因为在索引页找到所有数据,就不需要访问表的数据页,从而减少I/O操作,这种通常称为“覆盖查询”

创建准则

1. 必须至少定义一个键列

2. 在 CREATE INDEX 语句的 INCLUDE 子句中定义非键列

3. 只能对表或索引视图的非聚集索引定义非键列

4. 允许除 text、 ntext和 image之外的所有数据类型

5. 精确或不精确的确定性计算列都可以是包含列

6. 不能同时在 INCLUDE 列表和键列列表中指定列名

7. INCLUDE 列表中的列名不能重复

8. 索引键列(不包括非键)必须遵守现有索引大小的限制

9. 所有非键列的总大小只受 INCLUDE 子句中所指定列的大小限制;例如, varchar(max) 列限制为 2 GB

适合使用非聚集索引包含列

1. 筛选的列是索引键 && 查询的列都是包含的列

不适合使用非聚集索引包含列

2. 筛选的列不是索引键 || 查询的列有不在包含列中的

TSQL创建筛选索引

CREATE INDEX IX_TableName_FieldName ON DataTable(Field1 ASC) INCLUDE(Field2)

相关推荐

9克拉钻戒有多大?9克拉钻戒多少钱?
365beatapp官方下载

9克拉钻戒有多大?9克拉钻戒多少钱?

📅 07-03 👁️ 8233
高效学习HTML指南
365beatapp官方下载

高效学习HTML指南

📅 07-22 👁️ 8385
为什么狗要玩毛绒动物玩具它的心理是怎么样的
365bet提款维护

为什么狗要玩毛绒动物玩具它的心理是怎么样的

📅 07-20 👁️ 6568
我是如何充分利用大学时光的
365bet体育投注官网

我是如何充分利用大学时光的

📅 07-02 👁️ 8603