Innodb引擎是否支持Hash类型索引? —— 不支持
MySQL的Innodb引擎中是可以建立Hash类型的索引的:
1 | ... |
使用explain查看也是正常命中索引的
1 | explain select * from t_test where secret = 'xxxx'; |
possible_key与key都是pk_secret,貌似是起了效果,但是官方文档中InnoDB的Permissible Index Type只有BTREE。
貌似这里冲突了,其实不然。实际情况是InnoDB默认隐式的转换了Hash类型为BTree类型。虽然查看表索引还是显示的Hash,但是实际底层却是BTree类型的实现。
InnoDB 有存在自适应Hash的概念,但是这个不是通过配置的(引擎自身的优化行为):