MySQL-同一列的BTree和哈希索引

时间:2019-01-07 18:07:26

标签: mysql sql indexing b-tree-index

除了有关同一列的两个索引的问题外,我试图找到类似的问题,但没有找到任何问题。

让我们假设我们有一个包含列COL的表。该表(以及整个数据库)对于客户端是只读的(让我们假设它每隔很长的时间便一次/一次且仅由后端服务进行更新)。因此,插入/更新时间无关紧要。

在此列中,有一些使用率很高的查询来搜索COL值在某个范围内的行,而一些使用率更高的查询会搜索其中COL与一个值直接比较的行。值(相等性检查)。

鉴于以上所述,在BTREE上同时保留HASHCOL索引是否有益?优化程序是否将BTREE索引用于范围查询,并将HASH索引用于直接比较查询? 如果COL的类型为varchar(256),答案会改变吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

我会坚持使用B树索引,因为无论如何您都需要它。使用散列索引也可能会获得一些小的性能提升,但是您还将占用更多的内存。

更重要的是,哈希索引不适用于最常见的存储引擎(InnoDB和MyISAM)-documentation中的表13.1。