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

本文深入解析SQL中的聚集索引与非聚集索引概念,通过类比词典和部首查找,阐述两者在数据库查询效率上的差异,并提供适用场景的建议。

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

原本是想写关于SQL数据优化方面的文章的,现在网上看了下, 被“误入歧途”到关于:聚集索引和非聚集索引的区别上,遂研究了下,看懂了不少,现写下来,记录下   聚集索引:聚集索引既然名字中有个“聚集”,说明突出在“聚集”两个字上。可以比较形象的说成是一个词典的拼音索引,比如我要查:东方的“东”字,但是我不知道东字怎么写,这时比较快捷的方法就是,直接根据拼音“ dong ”来查到大概是哪一页开始的,然后再找。这个“拼音的索引”就相当于“聚集索引”。 非聚集索引:但也可能是这种情况,我只知道他是怎么写的,但是不知道怎么念,这时我们会根据字的部首来查这个字,如部首“∕”,那你可能查到的是“年”,也可能是“爱”,可能是“受”,这样你查询的结果就相当零散和不连续,效率就十分低下,这就是“非聚集索引”   下面来说下官方的说法:   聚集索引: 一种索引,该索引中键值的 逻辑顺序决定了表中相应行的物理顺序。 聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,按姓氏排列数据。 由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。   适用情况 1 、含有大量非重复值的列。 2 、使用 BETWEEN,>,>=,< <= 返回一个范围值的列 3 、被连续访问的列 4 、返回大型 结果集的查询 5 、经常被使用连接或 GROUP BY 子句的查询访问的列 下面的表总结了何时使用聚集索引或 非聚集索引
动作描述使用聚集索引使用非聚集索引
列经常被分组排序
返回某范围内的数据不应
一个或极少不同值不应不应
小数目的不同值不应
大数目的不同值不应
频繁更新的列不应
外键列
主键列
频繁修改索引列不应
 

转载于:https://www.cnblogs.com/woaic/archive/2013/01/16/3943060.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值