由于MySQL在创建索引时默认使用BTREE
,因此在使用HASH
时是否存在某些实例?例如,如果我的表只包含只有INT UNSIGNED
值的外键。在这种情况下用HASH覆盖BTREE是一个很好的改进吗?
不确定是否重要,但我正在使用InnoDB
。
答案 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 表构建。