什么时候可以使用HASH而不是BTREE来使用MySQL?

8

由于MySQL在创建索引时默认使用BTREE,是否有某些情况下我可以使用HASH?例如,如果我的表只包含作为INT UNSIGNED值的外键。在这种情况下,覆盖BTREE以HASH是一个好的改进吗?

不确定是否重要,但我正在使用InnoDB


3
B-树和哈希索引的比较。请注意,InnoDB不支持哈希索引。 - eggyal
文档对每个功能的工作原理都有很好的解释。请参考文档 - Kermit
2个回答

13

HASH索引类型仅支持MEMORY(又称为HEAP)存储引擎。


1

请看这里: https://dev.mysql.com/doc/refman/8.0/en/glossary.html#glos_hash_index

哈希索引

一种用于使用等值运算符而非大于或介于等范围运算符的查询的索引类型。它适用于MEMORY表格。虽然由于历史原因,哈希索引是MEMORY表格的默认选项,但该存储引擎也支持B树索引,后者通常更适合于通用查询。

MySQL包括此索引类型的一个变体,自适应哈希索引,如果需要根据运行时条件,将自动为InnoDB表格构建。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接