mysql探索(二) 大数据量下的 “like” 查询

我们在做业务的时候,经常碰到“模糊查询”这个需求,通常在数据量少的时候,我们习惯使用 where table.field like '%XXX%"',非常好用。

但是当数据量变大的时候,特别是百万级的数据表时,再用like查询,我们会发现,查的要多慢就有多慢。

这是为什么呢?

我们都知道,数据表字段加索引可以大大加快数据的查询速度,但是like "%XXX%"这种语句,其实它是不走索引的,所以就算是加了索引的字段,是用这种方式查询,也是按照全表扫描的速度一模一样。

如果要让like走索引,应该怎么查呢?

答案是:where like "XXX%",由于mysql的底层机制,当百分号在右边的时候,是走索引的。

当然,这只能解决一部分的需求,如果我非得在两边都加百分号,应该怎么办呢?

好的,这个时候我们可以用《全文索引》来解决这个问题。

第一步:给需要查询的字段加上全文索引

第二步:使用对应的语法进行查询 where MATCH(table.field) AGAINST ('*XXX*' IN BOOLEAN MODE)

就这两步,就解决了。当然,全文索引还有更多的用法。在这里我不一一列举。感兴趣的话,可以去查找相关资料。

今天同时碰到的问题,解决后记一下,以防忘记。

posted on 2021-11-30 15:37  little天  阅读(1615)  评论(0编辑  收藏  举报

导航