由于MySQL在创建索引时默认使用BTREE
,是否有某些情况下我可以使用HASH
?例如,如果我的表只包含作为INT UNSIGNED
值的外键。在这种情况下,覆盖BTREE以HASH是一个好的改进吗?
不确定是否重要,但我正在使用InnoDB
。
HASH
索引类型仅支持MEMORY
(又称为HEAP
)存储引擎。
请看这里: https://dev.mysql.com/doc/refman/8.0/en/glossary.html#glos_hash_index
哈希索引
一种用于使用等值运算符而非大于或介于等范围运算符的查询的索引类型。
它适用于MEMORY表格
。虽然由于历史原因,哈希索引是MEMORY表格的默认选项,但该存储引擎也支持B树索引,后者通常更适合于通用查询。MySQL包括此索引类型的一个变体,自适应哈希索引,如果需要根据运行时条件,将自动为InnoDB表格构建。