我有一张这样的桌子。
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假设允许哈希索引?
答案 0 :(得分:2)
InnoDB中的功能称为自适应哈希索引,
是否使用哈希索引取决于表的规模和查询频率,它是一个完全内部策略,通常不在配置范围内。
https://dev.mysql.com/doc/refman/5.7/en/innodb-adaptive-hash.html
答案 1 :(得分:1)
InnoDB默默地将“HASH”改为“BTree”。 BTree索引可以完成HASH的功能,还有更多功能。或者你认为有一个很好的理由想要哈希?