MySQL何时可以使用HASH而不是BTREE

时间:2013-01-19 19:56:40

标签: mysql hash indexing innodb b-tree

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

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

2 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:0)

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

<块引用>

哈希索引

一种索引,用于使用相等运算符而不是范围运算符(例如大于或 BETWEEN)的查询。 It is available for MEMORY tables。尽管由于历史原因,哈希索引是 MEMORY 表的默认值,但该存储引擎也支持 B 树索引,这通常是通用查询的更好选择。

MySQL 包含这种索引类型的一个变体,即自适应哈希索引,如果需要,它会根据运行时条件自动为 InnoDB 表构建。