聚集索引和非聚集索引区别

本文介绍了数据库索引中的聚集索引和非聚集索引的区别。聚集索引决定了表中数据的物理顺序,一个表只能有一个,适合范围查询;而非聚集索引逻辑上连续,物理存储不连续,可以有多个,类似于目录结构,包含指向数据的指针。创建聚集索引使用`CREATE CLUSTERED INDEX`,非聚集索引使用`CREATE NONCLUSTERED INDEX`。

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

一、概念:

     1、聚集索引一个表只能有一个,非聚集索引一个表可以存在多个

           聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索                引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。

           对于那些经常要搜索范围值的列特别有效。使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理相邻。

           避免每次查询该列时都进行排序,从而节省成本。

             create NONCLUSTERED INDEX idximpID ON EMP(empID)

     2、聚集索引存储记录是物理上连续存在,非狙击索引是逻辑上连续,物理存储并不连续

           非聚集索引与课本中的目录类似。数据存储在一个地方,索引存储在另一个地方,索引带有指针指向数据的存储位置。索引中的项目按索引键值的            顺序存储,而表中的信息按另一种顺序存储(这可以由聚集索引规定)。如果在表中未创建聚集索引,则无法保证这些行具有任何特定的顺序。

            create CLUSTERED INDEX idxempID on emp(empID)

 二、何时使用聚集索引或非聚集索引

     下面的表总结了何时使用聚集索引或非聚集索引(很重要):

  

动作描述 使用聚集索引 使用非聚集索引
列经常被分组排序
返回某范围内的数据 不应
一个或极少不同值 不应 不应
小数目的不同值 不应
大数目的不同值 不应
频繁更新的列 不应
外键列
主键列
频繁修改索引列 不应



  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值