SQL Server索引中include的魅力(具有包含性列的索引)

开文之前首先要讲讲几个概念

【覆盖查询】

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

【索引覆盖】

如果返回的数据列就包含于索引的键值中,或者包含于索引的键值+聚集索引的键值中,那么就不会发 生Bookup Lookup,因为找到索引项,就已经找到所需的数据了,没有必要再到数据行去找了。这种情况 ,叫做索引覆盖;

【复合索引】

和复合索引相对的就是单一索引了,就是索引只包含一个字段,所以复合索引就是包含两个或者多个 字段的索引;

【非键列】

键列就是在索引中所包含的列,当然非键列就是该索引之外的列了;

下面就开始今天的主题

【摘要1】

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

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

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

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

说明:第一:只能是针对非聚集索引;第二:比起复合索引是有性能上的提升的,因为索引的大小变 小了;

【摘要2】

键列存储在索引的所有级别中,而非键列仅存储在叶级别中。

说明:这就表现为包含与不包含的关系了。有关索引级别的详细信息,请参阅表组织和索引组织。

时间: 2024-12-28 03:56:57

SQL Server索引中include的魅力(具有包含性列的索引)的相关文章

SQL Server 2008中的数据压缩功能

SQL Server 2005 SP2为我们带来了vardecimal功能,这项功能使得原来定长的decimal数据在数据文件中以可变长的格式存储,据称这项功能可以为典型的数据仓库节省30%的空间,而SQL Server 2008在这一基础上又进一步增强了数据压缩功能.SQL Server 2008现在支持行压缩和页面压缩两种选项,数据压缩选项可以在以下对象上启用: 未创建聚簇索引的表 创建聚簇索引的表 非聚簇索引(对表设置压缩选项不会影响到该表上的非聚簇索引,因此聚簇索引的压缩需要单独设置)

SQL Server 2008中这样订阅策略组

SQL Server 2005 SP2为我们带来了vardecimal功能,这项功能使得原来定长的decimal数据在数据文件中以可变长的格式存储,据称这项功能可以为典型的数据仓库节省30%的空间,而SQL Server 2008在这一基础上又进一步增强了数据压缩功能.SQL Server 2008现在支持行压缩和页面压缩两种选项,数据压缩选项可以在以下对象上启用: 未创建聚簇索引的表 创建聚簇索引的表 非聚簇索引(对表设置压缩选项不会影响到该表上的非聚簇索引,因此聚簇索引的压缩需要单独设置)

SQL Server 2008中的数据表压缩功能详细介绍_mssql2008

SQL Server 2005 SP2为我们带来了vardecimal功能,当时针对decimail和numeric数据类型推出了新的存储格式--vardecimal.vardecimal存储格式允许 decimal和numeric数据类型的存储作为一个可变长度列. 这项功能使得原来定长的decimal数据在数据文件中以可变长的格式存储,据称这项功能可以为典型的数据仓库节省30%的空间,而SQL Server 2008在这一基础上又进一步增强了数据压缩功能.SQL Server 2008现在支持

在 SQL Server 2005 中查询表结构及索引

server|索引 在 SQL Server 2005 中查询表结构及索引 -- 1. 表结构信息查询 -- ========================================================================-- 表结构信息查询 -- 邹建 2005.08(引用请保留此信息)-- ========================================================================SELECT     Tab

在SQL Server 2005中查询表结构及索引

server|索引 在 SQL Server 2005 中查询表结构及索引 -- 1. 表结构信息查询 -- ===================================================-- 表结构信息查询-- 邹建 2005.08(引用请保留此信息)-- ====================================================SELECT     TableName=CASE WHEN C.column_id=1 THEN O.name

SQL Server 2005 中的分区表和索引

本文示例源代码或素材下载 摘要:SQL Server 2005 中基于表的分区功能为简化分区表的创建和维护过程提供了灵活性和更好的性能.追溯从逻辑分区表和手动分区表的功能到最新分区功能的发展历程,探索为什么.何时以及如何使用 SQL Server 2005 设计.实现和维护分区表. 为什么要进行分区? 什么是分区?为什么要使用分区?简单的回答是:为了改善大型表以及具有各种访问模式的表的可伸缩性和可管理性.通常,创建表是为了存储某种实体(例如客户或销售)的信息,并且每个表只具有描述该实体的属性.一

使用 SQL Server 2005中的 CLR 集成

本文描述了数据库应用程序开发人员和架构师如何利用 SQL Server 2005 中的 CLR 集成功能.本文对基于 CLR 的编程方式与 SQL Server 中支持的现有编程模型(如 TransacT-SQL 和扩展存储过程)进行了比较,并且强调了各自相对的优缺点.还提供了一组选择合适的编程替代方法的高级指导,以及一些示例和代码示例. 一.简介 Microsoft 通过宿主 Microsoft .NET Framework 2.0 公共语言运行库 (CLR),SQL Server 2005显

Microsoft SQL Server 2005 中的 XML 支持(1)

本文探讨 SQL Server 2005 中内置的 XML 支持.描述了这种支持如何与 .NET 框架 V2.0 和本机代码(例如 OLEDB 和 SQLXML)均支持的客户端编程相集成. 一.简介 可扩展标记语言 (XML) 作为一种与平台无关的数据表示形式已被广泛采用.它对于在松散耦合且完全不同的系统,以及各种企业到企业 (B2B) 应用和工作流范畴内交换信息是很有用的.数据交换已成为 XML 技术的主要驱动力之一.. XML 在企业应用程序中的使用正日益广泛,它主要用于对半结构化和非结构化

SQL Server 2005 中的批编译、重新编译和计划缓存问题(4)

下面,考虑以下 T-SQL 代码段:-- dbo.someTable will be used to populate a temp table-- subsequently.create table dbo.someTable (a int not null, b int not null)godeclare @i intset @i = 1while (@i <= 2000)begin insert into dbo.someTable values (@i, @i+5) set @i =