mysql regex()交替匹配顺序?

时间:2013-07-09 13:28:39

标签: mysql preg-match

使用以下查询:

SELECT * FROM people WHERE name REGEXP(bob|robert)

我是否正确地假设mysql将以相当随机的顺序扫描每一行,寻找'bob'或'robert'(而不是首先是bob,然后是robert的另一次扫描)?

如果是这样,有没有办法让mysql首先尝试将整个表格与'bob'匹配,然后再执行'robert'而不执行两个单独的查询?

2 个答案:

答案 0 :(得分:1)

首先没有合理的方法将整个表格与bob匹配(您为什么要这样做?)

但是,您可以订购结果,但如果表格具有较高的基数和/或name不是关键字,则可能会很慢。

SELECT * FROM people WHERE name = 'bob' OR name = 'robert'
ORDER BY name = 'bob' DESC

答案 1 :(得分:1)

SELECT * FROM people WHERE name REGEXP(bob|robert) order by name desc

这只是一个查询,并完成工作。

SGBD可以按原样扫描数据,它不是在SQL中指定的,也不是随机的。

未指定可以是随机的,但不是随机的。