带有哈希索引的MySQL InnoDB表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带有哈希索引的MySQL InnoDB表相关的知识,希望对你有一定的参考价值。

我有一张这样的桌子。

ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

后来我创建了这样的HASH索引。

CREATE INDEX index ON table (column) USING HASH;

后来我尝试了一些解释查询。

喜欢

explain Select * from table where column=132;

我看到引擎正在使用possible_keys上的索引,并在关键的东西中说索引的名称!!

但是在文档中说InnoDB现在不允许哈希索引我想知道为什么我的innoDB假设允许哈希索引?

答案

InnoDB默默地将“HASH”改为“BTree”。 BTree索引可以完成HASH的功能,还有更多功能。或者你认为有一个很好的理由想要哈希?

另一答案

InnoDB中的功能称为自适应哈希索引,

是否使用哈希索引取决于表的规模和查询频率,它是一个完全内部策略,通常是在配置之外。

https://dev.mysql.com/doc/refman/5.7/en/innodb-adaptive-hash.html

以上是关于带有哈希索引的MySQL InnoDB表的主要内容,如果未能解决你的问题,请参考以下文章

MySQL中的自适应哈希索引

MySQL中索引和优化的用法总结

MySQL到底支不支持哈希索引?(收藏)

InnoDB 索引

Java面试05|MySQL及InnoDB引擎

转:MySQL InnoDB Add Index实现调研