Btree索引和Hash索引

fyh 2022年05月17日 54次浏览

myisam通过数据行的物理位置来引用数据,innodb通过主键

在什么情况下可以用到B树索引:

  1. 全值匹配的查询:
    order_sn = '987632119900'
  2. 匹配最左前缀的查询
  3. 匹配列前缀查询
    4.匹配范围值的查询
    5.精确匹配左前列并范围匹配另外一列
    6.只访问索引的查询

Btree索引的使用限制
. 如果不是按照索引最左列开始查找,则无法使用索引
. 使用索引时不能跳过索引中的列
. Not in和<>操作无法使用索引
. 如果查询中有某个列的范围查询,则其右边所有列都不发使用索引

Hash索引的特点:
1.Hash索引是基于Hash表实现的,只有查询条件精确匹配Hash索引中的所有列的,才能够使用到Hash索引。
2.对于Hash索引中的所有列,存储引擎都会为每一行计算一个hash码,Hash索引中存储的就是Hash码。