底层文件系统读取和写入数据
当我们查询数据的时候,要去读机械硬盘时,我们需要通过我们的柱面,磁道定位到扇区,然后找到table.idb存储在图右磁盘的红色区域内,读取数据时(假设顺时钟),将会从A依次读到B,这就是原始存储和读取方式。
如果建立了索引就直接存储id + address直接定位到目标位置。
hash索引和B+树区别
select * from person where id = 1,就可以对id做hash,快速的找到数据。这样是没错,可是使用hash的话,有一个显著的弊端,无法进行范围的查找。比如:select * from person where id > 1;这样使用哈希完全没有办法找到数据在哪里。
1.而B+树本身的父节点就是子节点的范围所以可以按照范围查找。
2.哈希索引没办法利用索引完成排序
3.哈希索引不支持多列联合索引的最左匹配规则
4.如果有大量重复键值的情况下,哈希索引的效率会很低,因为存在哈希碰撞问题
有了索引下推优化,可以在有like条件查询的情况下,减少回表次数。
网友评论