mysql 哈希索引

2020-07-03 09:22:29 +08:00
 brader

你们在实际工作中,哈希索引用的多吗? 这么多年来,我在实际项目中,哈希索引一次都没用过,不知道是自己对哈希索引的认知度不高,还是使用场景本来就少。

我能想到的使用场景,就是类似 url 这样的字段,都是等值查询的,但是我做过的项目中,很少以 url 字段作为 where 条件的,所以也就不会给这样的字段建立索引。 还有一部分,虽然有等值查询的场景,但是偶尔有业务会用到模糊匹配,所以也放弃了哈希索引,改用普通索引。

2574 次点击
所在节点    MySQL
16 条回复
marquina
2020-07-03 09:23:52 +08:00
InnoDB 有自适应哈希索引啊
brader
2020-07-03 09:27:36 +08:00
@marquina 是有自适应哈希,但是和你单独建的哈希索引,用起来肯定是有区别的,如果完全没区别,mysql 也就没必要保留这个索引类型了。
gz911122
2020-07-03 09:45:12 +08:00
@brader 为什么肯定有区别啊?
brader
2020-07-03 10:08:50 +08:00
@gz911122 自适应的,例如:某些情况不会建,获取有时候建了,查询的时候不一定会用
zc1249274251
2020-07-03 10:22:03 +08:00
现在 mysql 引擎基本都是 InnoDB,所以接触 hash 索引就很少了 平常使用 mysql 基本就是关系 ACID 也确实用不到 hash 索引一般是用在搜索上这块儿 如果有做搜索引擎的老哥 估计了解得多
brader
2020-07-03 10:34:30 +08:00
@zc1249274251 做搜索引擎业务的,也很少用 mysql 数据库吧,可能是用 ES 之类的?
souco
2020-07-03 10:43:27 +08:00
我记得 innoDB 只是支持自适应 hash 索引,创建索引的话只支持 btree ?
csl1995
2020-07-03 11:10:41 +08:00
基本不会用到的,正常业务都会有范围查询的,哈希只能做等值,所以基本都是用默认的 B+Tree
chihiro2014
2020-07-03 11:11:38 +08:00
不能说没有用吧,只是 hash 索引用的范围较小,只适合精准查询(比如用=这种),不适合范围查询。如果只是确定的东西,使用 hash 索引是最快的,不然要么就循序扫描。MySQL 的话默认 B+Tree 。一般 hash 索引如果 gg,那就会退化为循序扫描了,说的不一定对,看看就好
hangszhang
2020-07-03 11:36:22 +08:00
自己创建不了 hash 索引吧,只能 InnoDB 自己去创建
Kakajing
2020-07-03 11:40:51 +08:00
@hangszhang 可以创建,为啥不可以???
slipper
2020-07-03 11:46:25 +08:00
因为 B+树的树高很低+顺序读盘,像你这种需求用前缀索引,哪怕几百万条,查询的时间消耗同哈希索引多消耗的时间消耗是微秒甚至 ns 级别,因为无论哪个索引都要读盘,差距的只是传送时间。而网络消耗都是毫秒以上,这样一比较,哈希索引几乎没有时间上的优势了。如果你业务上真的有用哈希比用 B+有明显时间差的话,建议还是不用 innoDB 了。
0x0208v0
2020-07-03 11:54:23 +08:00
如果你只有一个 mysql,但是还想有缓存的效果,哈希索引就有用了。有钱当然可以上 redis,没钱,哈希索引也还好
love
2020-07-03 13:46:36 +08:00
@Kakajing 我记得似乎只有内存表有 hash 索引啊?谁用 mysql 内存表啊?
brader
2020-07-03 15:02:26 +08:00
@love 嗯,mysql 只有 MEMORY 引擎显式地支持 hash 索引,不能说没人用吧,有些业务可能会用到
npe
2020-07-03 15:22:16 +08:00
InnoDB 在 8.0 移除了 Hash 索引。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/686743

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX