单表千万行数据库 LIKE 搜索优化手记

2020-08-30 14:29:36 +08:00
 Soar360

对于左前缀匹配,我们可以通过增加索引的方式来加快查询速度。

对于右后缀匹配,我们可以建立倒序字段将右后缀匹配变成左前缀匹配来加快查询速度。

对于模糊查询,我们可以通过分词+倒排索引的方式优化查询速度。

https://www.coderbusy.com/archives/662.html

2352 次点击
所在节点    数据库
10 条回复
514146235
2020-08-30 15:25:09 +08:00
production 环境一般禁止使用 like
hcx0
2020-08-30 15:41:25 +08:00
所以你明明需要的是 ES,为什么非要去用 MySQL 来实现呢
iConnect
2020-08-30 15:46:34 +08:00
都分词加索引了,不用 es 做什么呢
Soar360
2020-08-30 16:14:38 +08:00
@hcx0
@iConnect
ES 这种东西,应该是用了之后才觉得香吧,不过,我没用过。
chendy
2020-08-30 16:39:57 +08:00
对于模糊查询,我们可以通过分词+倒排索引的方式优化查询速度。
es 欢迎您
pcbl
2020-08-30 17:16:33 +08:00
es 用过,确实更专业,不过 mysql 的全文索引够用的情况下没必要引入新的组件
newtype0092
2020-08-30 17:28:19 +08:00
@Soar360 快用用吧,现在挺方便了。以前用 LIKE 想加个规则各种痛苦,用了 ES 以后是真的香,随便玩花活。
yangxin0
2020-08-30 19:32:08 +08:00
btree 不是这样玩儿的
littlewing
2020-08-30 21:17:58 +08:00
很好,我选择 ELK
littlewing
2020-08-30 21:22:07 +08:00
@pcbl
1. 你永远不知道后面业务发展会导致有多么复杂的需求,不如一步到位,一开始就让专业的软件做专业的事
2. 随着业务的发展,SQL 语句越来越多,如果你们有 SQL 上线前的审计还好,如果没有,万一有查询无法使用到索引,要全表扫描的时候将是灾难

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

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

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

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

© 2021 V2EX