使用以下查询:
SELECT * FROM people WHERE name REGEXP(bob|robert)
我是否正确地假设mysql将以相当随机的顺序扫描每一行,寻找'bob'或'robert'(而不是首先是bob,然后是robert的另一次扫描)?
如果是这样,有没有办法让mysql首先尝试将整个表格与'bob'匹配,然后再执行'robert'而不执行两个单独的查询?
答案 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中指定的,也不是随机的。
未指定可以是随机的,但不是随机的。