我需要在其中一列中找到一个嵌入式字符串,并根据该字符串进行一些分类。
为此,我使用了LIKE
这样的语句:
select * from table where column like "%_ABC_%" (did not intend to use _ as a wildcard)
但这太慢了。后来,当我发现_
也是MySQL中的通配符时,我将其删除,查询运行得更快。只是想知道是否对此有任何解释?
答案 0 :(得分:1)
下划线(_
)通配符表示单个字符,而百分号(%
)表示0至N个字符的序列。您的RDBMS通常能够从中获利,并且使用下划线通配符进行搜索的速度更快。
答案 1 :(得分:0)
百分号%
代表0
至N
个字符,而下划线_
代表单个字符。这意味着匹配%_ABC_%
的字符串集是匹配%ABC%
的字符串集的子集。 MySQL引擎可以从中受益。