Nonclustered Indexes页级别包含什么数据?

本文详细解析了SQL中创建测试表、非聚集索引、查询操作及其执行计划,阐述了索引在不同场景下的作用及存储方式,旨在帮助读者理解如何优化查询性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先来看两个例子:

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一次性返回所有数据(C1C2C3),说明在有Cluster索引表中,非聚集索引页业级别存储了Cluster index key,valueNONCLUSTERED INDEX值以及Include字段值。

4.删除主键再运行相同的查询得到下面的执行计划:

可以看到使用了索引Ix_C2以及RID Lookup共同返回数据,说明非聚集索引页级别在HEAP表中存储的是RIDFileID:PageID:SlotNumberNONCLUSTERED INDEX值以及Include 字段值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值