mysql为什么用B+而不用hash存储索引
1.利用哈希需要把数据全部加载到内存中,如果数据量大,是一件很消耗内存的事,而B+树是由于按照节点分段加载可以减少内存消耗
2.和业务场景有关,对于唯一查找,hash确实很快,但是数据库中经常查询多条数据,这个时候由于B+的有序性,叶子节点与链表相连,查找效率会比hash快很多
覆盖索引与回表
回表查询
在innodb查询的时候,先定位主键值然后在定位行记录,就是所谓的回表查询
索引覆盖
explain的输出结果extra字段为Using index是能够触发索引覆盖