MySQL默认数据表存储引擎为InnoDB,这是一种B+树的索引结构。
当试图在InnoDB表中创建哈希索引
CREATE INDEX index_name ON table_name(column_name) USING HASH;
我们会收到警告:
Error Code: 3502 This storage engine does not support the HASH index algorithm, storage engine default was used instead.
大意是InnoDB不支持哈希索引,将索引储存为默认值。
这里sql语句虽然执行成功了,但得到的并不是哈希索引。我们打开索引表可以看到索引类型仍然是Btree。
MySQL支持在memory引擎下的表建立哈希索引。
你可以在创建表的时候选择memory引擎或者之后修改。
ALTER TABLE table_name ENGINE=memory;
在memory表的情况下可以建立哈希索引。
希望你在建表初期就指定好存储引擎,避免后期产生不必要的麻烦。如果你的表上存在外码,MySQL将不允许对表的引擎进行修改。
Error Code: 3776. Cannot change table's storage engine because the table participates in a foreign key constraint.