Hello World

吞风吻雨葬落日 欺山赶海踏雪径

0%

Innodb引擎是否支持Hash类型索引

Innodb引擎是否支持Hash类型索引? —— 不支持

MySQL的Innodb引擎中是可以建立Hash类型的索引的:

1
2
3
...
UNIQUE KEY `pk_secret` (`secret`) USING HASH,
...

使用explain查看也是正常命中索引的

1
explain select * from t_test where secret = 'xxxx';

possible_key与key都是pk_secret,貌似是起了效果,但是官方文档中InnoDBPermissible Index Type只有BTREE
貌似这里冲突了,其实不然。实际情况是InnoDB默认隐式的转换了Hash类型为BTree类型。虽然查看表索引还是显示的Hash,但是实际底层却是BTree类型的实现。

InnoDB 有存在自适应Hash的概念,但是这个不是通过配置的(引擎自身的优化行为):

Adaptive Hash Index

参考

官方文档索引类型

MySQL InnoDB table with a Hash Index