我试过寻找类似的问题,但没有发现任何问题,除了关于同一列的两个索引的问题(一般来说)。
假设我们有一个带列的表 COL
. 表(和整个数据库)对于客户端是只读的(假设它每长时间更新一次,并且只由后端服务更新一次)。因此,插入/更新时间无关紧要。
对于此列,有大量使用的查询,它们搜索 COL
值在某个范围内,一些更常用的查询搜索 COL
直接与值比较(相等检查)。
鉴于上述情况,同时持有两种观点是否有益 BTREE
以及 HASH
索引打开 COL
? 优化器会使用 BTREE
范围查询和 HASH
直接比较查询的索引?答案会改变吗 COL
属于类型 varchar(256)
?
谢谢!
1条答案
按热度按时间shstlldc1#
我会坚持使用b树索引,因为你无论如何都需要它。使用散列索引也可能会带来一些小的性能提升,但是您也会占用更多的内存。
更重要的是,哈希索引不适用于最常见的存储引擎(innodb和myisam)——文档中的表13.1。