SELECT data
FROM test
WHERE col REGEXP "asdf_[0-9]+"
LIMIT 1
...... 1排(1分43.12秒)
SELECT data
FROM test
WHERE col LIKE "asdf_%"
LIMIT 1
...... 1行(0.01秒)
regexp
可以给我确切的结果,如果我使用like
sql,我必须过滤数据。有什么方法可以改善吗?
答案 0 :(得分:4)
尝试将regexp
字符串更改为"^asdf_[0-9]+"
。
LIKE
已锚定(即LIKE 'asdf_%'
表示“以asdf_开头的字符串”,而REGEXP
不是(REGEXP 'asdf_[0-9]+'
在字符串中的任何位置查找)。
请注意,执行REGEXP 'asdf_[0-9]+'
就像说LIKE '%asdf_%'
。
我认为REGEXP
仍然会比LIKE
慢一点,但希望线锚的开始会大大加快速度。