增加通配符的MySQL LIKE性能

时间:2019-01-03 12:32:40

标签: mysql

我需要在其中一列中找到一个嵌入式字符串,并根据该字符串进行一些分类。

为此,我使用了LIKE这样的语句:

select * from table where column like "%_ABC_%"   (did not intend to use _ as a wildcard)

但这太慢了。后来,当我发现_也是MySQL中的通配符时,我将其删除,查询运行得更快。只是想知道是否对此有任何解释?

2 个答案:

答案 0 :(得分:1)

下划线(_)通配符表示单个字符,而百分号(%)表示0至N个字符的序列。您的RDBMS通常能够从中获利,并且使用下划线通配符进行搜索的速度更快。

答案 1 :(得分:0)

百分号%代表0N个字符,而下划线_代表单个字符。这意味着匹配%_ABC_%的字符串集是匹配%ABC%的字符串集的子集。 MySQL引擎可以从中受益。