Soar360
V2EX  ›  数据库

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

  •  1
     
  •   Soar360 · Aug 30, 2020 · 2802 views
    This topic created in 2111 days ago, the information mentioned may be changed or developed.

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

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

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

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

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