当前位置: 首页 > 未分类>阅读正文

mysql用什么取代like?

2022.7.12 朱丰华 1531 次 留下评论 569字

like搜索一般会导致索引失效,从而全表扫描,速度慢。

通常情况下,like使用的是 %str% ,这种情况索引是肯定会失效的,但这种用法最普遍。(左匹配不失效,但关键字必须在开头,like ‘title%’)

sql函数方法

一些内置函数,可以实现like功能,性能比 like 好一些。

instr — 字符串包含。

如果关键字相同:

where instr(nvl(a, '')||nvl(b,'')||nvl(c,''),   'xx') > 0

如果关键字不同:

where instr(a, 'xx') > 0  or  instr(b, 'yy') > 0  or instr(c, 'zz') > 0 

location、position、find_in_set等

全文检索

检索索引,也就是 fulltext 。

全文索引,速度是 like 的N倍,数据量越大,效果越明显。

在 mysql5.6之前,只有 myiasm支持fulltext,在mysql5.6,innodb也支持了fulltext。

实例:给表中专门做一个keywords字段只存储搜索关键字,这些关键字由程序动态生成,比如在发布一篇文章时就用分词工具提取“标题、正文”中的关键字,然后存储到keywords字段,然后对keywords字段使用fulltext索引,查询时直接match该字段,经过这几个操作,即使是100w条数据,搜索也低于0.03秒。

本篇完,还有疑问?留下评论吧

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注