1

我曾尝试找到类似的问题,但没有找到任何问题,除了关于同一列的两个索引的问题(通常)。

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

对于此列,有一些高度使用的查询会搜索COL值在某个范围内的行,还有一些更常用的查询会搜索COL与值直接比较的行(相等性检查)。

考虑到上述情况,同时持有 aBTREEHASHindex是否有益COL?优化器会将BTREE索引用于范围查询,将HASH索引用于直接比较查询吗?COL如果是类型,答案会改变varchar(256)吗?

谢谢!

4

1 回答 1

3

我会坚持使用 B-Tree 索引,因为无论如何你都需要它。使用哈希索引也可能会带来一些小的性能提升,但您也将占用更多内存。

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

于 2019-01-07T18:29:36.067 回答