惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
爱范儿
爱范儿
宝玉的分享
宝玉的分享
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - Franky
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 三生石上(FineUI控件)
人人都是产品经理
人人都是产品经理
阮一峰的网络日志
阮一峰的网络日志
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Last Week in AI
Last Week in AI
博客园 - 聂微东
大猫的无限游戏
大猫的无限游戏
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
博客园 - 叶小钗
WordPress大学
WordPress大学
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
酷 壳 – CoolShell
酷 壳 – CoolShell
小众软件
小众软件
博客园 - 司徒正美
博客园 - 【当耐特】
IT之家
IT之家

博客园 - 狂笑人生

SQL SERVER 2008 开发系列(十五) SQL SERVER 2008 开发系列(十四) SQL SERVER 2008 开发系列(十三) SQL SERVER 2008 开发系列(十二) SQL SERVER 2008 开发系列(十) SQL SERVER 2008 开发系列(十一) SQL SERVER 2008 开发系列(九) SQL SERVER 2008 开发系列(八) SQL SERVER 2008 开发系列(七) SQL SERVER 2008 开发系列(五) SQL SERVER 2008 开发系列(六) SQL SERVER 2008 开发系列(四) SQL SERVER 2008 开发系列(三) SQL SERVER 2008 开发系列(二) SQL SERVER 2008 开发系列(一) 浅析逻辑数据映射[转载] 浅析实时ETL的架构选择[转载] 数据库性能优化 数据挖掘技术
SQL SERVER 2008 开发系列(一)B
狂笑人生 · 2008-09-15 · via 博客园 - 狂笑人生

索引包含列应用 (补充说明)

您可以通过将非键列添加到非聚集索引的叶级,扩展非聚集索引的功能。通过包含非键列,可以创建覆盖更多查询的非聚集索引。这是因为非键列具有下列优点:

· 它们可以是不允许作为索引键列的数据类型。

· 在计算索引键列数或索引键大小时,数据库引擎不考虑它们。

当查询中的所有列都作为键列或非键列包含在索引中时,带有包含性非键列的索引可以显著提高查询性能。这样可以实现性能提升,因为查询优化器可以在索引中找到所有列值;不访问表或聚集索引数据,从而减少磁盘 I/O 操作。

当索引包含查询引用的所有列时,它通常称为“覆盖查询”。

use Blog
go

--创建索引包含列演示数据表
Create Table IndexInclude
(
EmployeeID int identity(1,1) primary key not null,
NationalIDNumber nvarchar(15) not null,
ContactID int not null,
LoginID nvarchar(256) not null,
ManagerID int null,
Title nvarchar(50) not null
)

go

select * from IndexInclude
go

--插入测试数据
insert into IndexInclude
select NationalIDNumber,ContactID,LoginID,ManagerID,Title from AdventureWorks.HumanResources.Employee

go

set statistics io on

--查询
select * from IndexInclude where NationalIDNumber='685233686'

--没有创建非聚集索引时,执行计划如下图所示:

clip_image002

逻辑读次数:8次;

--创建非聚集索引,并且包含列
CREATE INDEX IX_IndexInclude_NationalIDNumber      
ON IndexInclude (NationalIDNumber)      
INCLUDE (ContactID,LoginID,ManagerID,Title); 
go

--查询
select * from IndexInclude where NationalIDNumber='685233686'

创建非聚集索引,并且包括非键列时,执行计划如下图所示:

clip_image004

逻辑读次数:2次,性能明显提升了;