Re: [SQL ] 如何改善 LIKE '%search%' 的效能?

楼主: liisi (小心一点)   2017-08-15 15:21:21
大家午安
目前也是遇到 like '%关键字%' 效能会变差的问题
网站的商品数 超过一百万笔
网站的使用族群 是所有消费者
透过关键字 来模糊搜寻商品名称 甚至是二个以上的关键字来搜寻
( 商品名称 like '%关键字A%' or 商品名称 like '%关键字B%' )
测试过时间 需要 2 ~ 2.4秒左右
爬文了 也google过 了解如果把%放在前头 会让索引无效
我也自己试了一下 '关键字%' 时间0.0005秒 (也差太多了....)
但是关键字搜寻 不太可能用 like '关键字%'找资料
用其他的语法 locate试了一下 也是很慢
想请问大家 在语法的部分 目前还没办法解决吗?
※ 引述《DarkKiller (System hacked)》之铭言:
: ※ 引述《statue (statue)》之铭言:
: : AND Name1 LIKE '%怒气药水%'
: : Name1 是 varchar(255) utf-8 编码的字段.
: : 这样子查询的结果会比对 WIDB 整个表格, 像是资料有 22179 就会比对这么多次.
: MySQL 的 %...% 一定是 table scan,如果资料是拉丁语系资料,用 MySQL
: 提供的 fulltext index 做。
: 如果是 CJK 用专门的 fulltext search engine 做,像 Lucene (或 CLucene),
: 另外还需要了解一些目前切词常用到的基础原理。
: ==
: 另外我自己帮 pixnet 架的是 Xapian,目前已经在内部测试了...
作者: SeanBoog (施吉祥先生)   2017-08-15 16:49:00
建议你往资料规划的角度想, 避开LIKE例如关键字分析、资料正规化、资料快取 等 都可以发挥
作者: tracy217 (T大)   2017-08-15 17:48:00
select * from table where column like '%aaaa%' unionselect * from table where columne like '%bbbb%'透过 union 将多个关键字like 结果联集一起取代or方式

Links booklink

Contact Us: admin [ a t ] ucptt.com