V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Soar360
V2EX  ›  数据库

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

  •  1
     
  •   Soar360 · 2020-08-30 14:29:36 +08:00 · 1999 次点击
    这是一个创建于 461 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    10 条回复    2020-08-30 21:22:07 +08:00
    514146235
        1
    514146235  
       2020-08-30 15:25:09 +08:00
    production 环境一般禁止使用 like
    hcx0
        2
    hcx0  
       2020-08-30 15:41:25 +08:00   ❤️ 2
    所以你明明需要的是 ES,为什么非要去用 MySQL 来实现呢
    iConnect
        3
    iConnect  
       2020-08-30 15:46:34 +08:00 via Android
    都分词加索引了,不用 es 做什么呢
    Soar360
        4
    Soar360  
    OP
       2020-08-30 16:14:38 +08:00
    @hcx0
    @iConnect
    ES 这种东西,应该是用了之后才觉得香吧,不过,我没用过。
    chendy
        5
    chendy  
       2020-08-30 16:39:57 +08:00
    对于模糊查询,我们可以通过分词+倒排索引的方式优化查询速度。
    es 欢迎您
    pcbl
        6
    pcbl  
       2020-08-30 17:16:33 +08:00 via iPhone
    es 用过,确实更专业,不过 mysql 的全文索引够用的情况下没必要引入新的组件
    newtype0092
        7
    newtype0092  
       2020-08-30 17:28:19 +08:00
    @Soar360 快用用吧,现在挺方便了。以前用 LIKE 想加个规则各种痛苦,用了 ES 以后是真的香,随便玩花活。
    yangxin0
        8
    yangxin0  
       2020-08-30 19:32:08 +08:00 via iPhone
    btree 不是这样玩儿的
    littlewing
        9
    littlewing  
       2020-08-30 21:17:58 +08:00
    很好,我选择 ELK
    littlewing
        10
    littlewing  
       2020-08-30 21:22:07 +08:00
    @pcbl
    1. 你永远不知道后面业务发展会导致有多么复杂的需求,不如一步到位,一开始就让专业的软件做专业的事
    2. 随着业务的发展,SQL 语句越来越多,如果你们有 SQL 上线前的审计还好,如果没有,万一有查询无法使用到索引,要全表扫描的时候将是灾难
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2344 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 08:03 · PVG 16:03 · LAX 00:03 · JFK 03:03
    ♥ Do have faith in what you're doing.