先来看两个例子:
1.创建测试表,C1为主键。
CREATE TABLE [dbo].[ProdTable2](
[c1] [int] IDENTITY(1,1)NOTNULL,
[c2] [datetime] NULL,
[c3] [char](25)NULL,
CONSTRAINT[PK_ProdTable2]
PRIMARY KEY CLUSTERED
(
[c1] ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON
[PRIMARY]
) ON [PRIMARY]
2.创建非聚集索引:
CREATE NONCLUSTERED INDEX(
[c2] ASC
)
INCLUDE( [c3])WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,SORT_IN_TEMPDB=OFF,IGNORE_DUP_KEY=OFF,DROP_EXISTING=OFF,ONLINE=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON
[PRIMARY]
GO
3.查询C1表的所有字段,限制条件为C2:
select *
from dbo.ProdTable2
where c2 ='2012-08-0111:03:09.687'
执行计划:
可以看到查询使用了索引Ix_C2一次性返回所有数据(C1,C2,C3),说明在有Cluster索引表中,非聚集索引页业级别存储了Cluster
index key,value,NONCLUSTERED INDEX值以及Include字段值。
4.删除主键再运行相同的查询得到下面的执行计划:
可以看到使用了索引Ix_C2以及RID Lookup共同返回数据,说明非聚集索引页级别在HEAP表中存储的是RID(FileID:PageID:SlotNumber)NONCLUSTERED
INDEX值以及Include 字段值。
分享到:
相关推荐
微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。下面,我们举例来说明一下聚集索引和非聚集索引的区别: ...
As we’ll see, the clustered key is duplicated in every nonclustered index row, so keeping your clustered key small will allow you to have more index fit per page in all your indexes. Note The ...
数据库原理第三章:关系数据库标准语言SQL 数据库系统概论chp3-2全文共66页,当前为第1页。 问题 1. 模式的作用是什么?它和用户有什么关联? 2. SQL Server2008在删除模式时的默认级联选项是什么? 3.在创建数据表...
一个数据库管理系统,提供了开放的、全面的、完整的信息管理方法
描述了oracle RAC的相关内容 Oracle 11g: RAC and Grid Infrastructure Administration Accelerated Volume I - Student Guide
SQLServer中有几个可以让你检测、调整和优化SQL...当考察建立什么类型的索引时,你应当考虑数据类型和保存这些数据的column。同样,你也必须考虑数据库可能用到的查询类型以及使用的最为频繁的查询类型。 索引的类型
improvements for columnstore indexes in SQLServer 2016: updateable nonclustered columnstore indexes, columnstore indexes on in-memory tables, and many other new features for operational analytics. ...
而且随着数据量的增大,每次重新编译索引, 本身就导致SQL语句变慢. 最终解决方案: 唯一非聚集索引留着, 再添加一个 非聚集索引,保留两个索引, 终于搞定了. CREATE UNIQUE NONCLUSTERED INDEX [IX_SF_CP_Detail_MAC...
– Oracle Clusterware enables nonclustered and RAC databases to use the Oracle high-availability infrastructure. – Oracle Clusterware enables you to create a clustered pool of storage to be used by ...
相比之下,国内的相当数量的中小型医院的病人资料工作流程还采用相对保守的人工工作方式,数据信息的查询和存储的成本较高,而且效率还很低下。所以需要一种对于医院的病人资料管理系统来高效、低成本、便捷的进行...
当考察建立什么类型的索引时,你应当考虑数据类型和保存这些数据的column。同样,你也必须考虑数据库可能用到的查询类型以及使用的最为频繁的查询类型。 索引的类型 如果column保存了高度相关的数据,
微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。下面,我们举例来说明一下聚集索引和非聚集索引的区别: ...
9、视图是一种常用的数据对象,它是提供(1___)和(1___)数据的另一种途径,可以简化数据库操作,当使用多个数据表来建立视图时,表的连接不能使用(2___)方式,并且不答应在该语句中包括(3___)等要害字。...
表结构如下面代码创建 代码如下: CREATE TABLE test_tb ( TestId int not null ... 代码如下: CREATE UNIQUE NONCLUSTERED INDEX un_test_tb ON test_tb(Caption) GO 索引创建好了,我们来测试下效果 代码如下: INSE
CONSTRAINT [PK_PE_Address_AddressID] PRIMARY KEY NONCLUSTERED ([AddressID]) ) ON [PRIMARY] GO EXEC sp_addextendedproperty 'MS_Description', N'地址表', 'schema', 'dbo', 'table', 'PE_Address' GO EXEC...
微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)……
微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。
表结构如下面代码创建 代码如下: CREATE TABLE test_tb ( TestId int not null ... 代码如下: CREATE UNIQUE NONCLUSTERED INDEX un_test_tb ON test_tb(Caption) GO 索引创建好了,我们来测试下效果 代码如下: INSE
微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)……
微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。下面,我们举例来说明一下聚集索引和非聚集索引的区别: ...