请稍等 ...
×

采纳答案成功!

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

对于稀疏索引不是很理解

图片描述
稀疏索引的理解是指向一个块,不确定具体的数据是哪一个。但是在图中稀疏索引存储的是指向一个表的指针还是指向这个表里的某一条数据的指针?如果是指向某一条特定的数据那不是密集索引嘛?图中所示每一个主键索引的btree的叶子节点都存储了一个指向特定的一条数据的地址,那为什么是稀疏索引?是不是应该理解为叶子节点中存储的是指向一个完整的表(多条数据)。

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

1回答

翔仔 2020-05-06 20:49:55

同学好,  MyISAM索引文件和数据文件是分离的,索引文件仅保存记录所在页的指针(物理位置),通过这些地址来读取页(一页里面可以存储很多行的数据),进而读取被索引的行,你可以看到,图里面只是一个形象的比喻,可以看看下面的数据的第一行记录,很明显偏移值并不是连续的。

0 回复 有任何疑惑可以回复我~
  • 是不是表示就读取而言,MyISAM效率要高于InnoDB,如果是InnoDB查询时走稀疏索引获取主键后还要再走一次密集索引,这样理解对吗
    回复 有任何疑惑可以回复我~ 2021-07-27 16:21:23
  • 如果针对数据量大而言,是可以这样理解的,但如果就几千几百行数据,差别不是很大,而且因为有缓存,所以基本速度上没区别
    回复 有任何疑惑可以回复我~ 2021-07-27 23:42:19
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信