请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

稀疏索引不理解

翔仔老师好,请问稀疏索引的设计目的是什么,如果稀疏索引所在的列有重复元素怎么办呢?还有稀疏索引和密集索引的区别是什么?老师讲的是密集索引直接把数据存放到叶子节点,但是稀疏索引只是存放的地址。那还有其他区别吗?比如说系数索引不是对应的每一行,而是只有部分行被索引到吗?如果是部分行,怎样选取呢?为什么要选取这部分而不是其他部分呢?疑问有点多,望老师解答,百度实在是找不到答案才问老师的,百度上的图全是老师这两个图。

正在回答 回答被采纳积分+3

1回答

翔仔 2020-07-17 23:29:30

同学好,这个问题可以从以下角度来考虑,

稀疏索引和密集索引都是聚集索引;聚集索引是指数据是按照一定的顺序存储在磁盘上的,存放的顺序就是索引的顺序,所以聚集索引可以一次查询出数据,而不是像非聚集索引一样需要二次查询去获取数据;  密集索引是指每一个数据都对应一个检索的值,而稀疏索引是一个检索的值会对应多个连续的数据,稀疏索引查询时需要先找到点再去内部找对应的值。明白了这个我想同学应该能明白稀疏索引存在的意义了吧? 就是能够比密集索引占用更少的空间,而且插入删除比密集索引的开销也小,因为它不需要重排索引项


0 回复 有任何疑惑可以回复我~
  • 提问者 Licrates #1
    首先确认一下:聚集索引和聚簇索引是一个意思是吧。然后你在下面的问答里面,有位学员问道:请教下密集索引是不是就是聚簇索引 而稀疏索引是不是就是非聚簇索引。您的回答是是。那么这两个回答是否冲突?我也不喜欢纠结这些定义,但是定义不搞清楚无法讨论问题。
    回复 有任何疑惑可以回复我~ 2020-07-19 12:18:08
  • 提问者 Licrates #2
    我重新整理一下思路,如有错误希望老师指出和补充:聚集索引是指索引的顺序和物理地址相同,所有的聚集索引的叶子节点都存放了整行数据,可以直接引用到实际数据。密集索引和稀疏索引都属于聚集索引,区别是密集索引索引了某一列的全部数据,而稀疏索引只索引到了部分数据。对于另一部分非聚集索引,是指叶子节点并没有存放实际的数据,而是存放了指向实际数据的地址,所以需要通过多次查询才能找到想要的数据。对于非聚集索引来说不存在密集索引和稀疏索引的说法,密集和稀疏的概念只针对聚集索引。
    回复 有任何疑惑可以回复我~ 2020-07-19 12:25:29
  • 提问者 Licrates #3
    您下面的回复我全看了,都和我这个是冲突的
    回复 有任何疑惑可以回复我~ 2020-07-19 12:29:34
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信