带有哈希索引的MySQL InnoDB表

时间:2017-06-29 15:19:23

标签: mysql indexing hash

我有一张这样的桌子。

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假设允许哈希索引?

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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