MySQL中的条件执行顺序

时间:2011-11-30 14:30:56

标签: mysql database

假设我有两个条件的MySQL查询:

SELECT * FROM `table` WHERE `field_1` = 1 AND `field_2` LIKE '%term%';

第一个条件显然要比第二个条件便宜很多,所以我想确保它首先运行,限制将与LIKE子句进行比较的行池。 MySQL查询条件是按照它们列出的顺序运行的,如果没有,是否有指定顺序的方法?

3 个答案:

答案 0 :(得分:7)

MySQL有一个内部查询优化器,可以在大多数情况下处理这些事情。所以,通常情况下,您不必担心它。

但是,当然,查询优化器并非万无一失。所以......

很抱歉这样做,但如果您怀疑某个查询的运行效率低于应有效率,那么您需要熟悉EXPLAIN

http://dev.mysql.com/doc/refman/5.0/en/explain.html

答案 1 :(得分:7)

优化器将按其认为合适的顺序评估WHERE条件。

SQL为declarative:您告诉优化人您想要什么,而不是

procedural/imperative语言(.net,Java,php等)然后你说如何并选择首先评估哪个条件。

注意:“从左到右”确实适用于(a+b)*c之类的某些表达,如您所期望的那样

答案 2 :(得分:1)

如果您对MySQL的索引使用有疑问,可以建议应该使用哪个索引。

http://dev.mysql.com/doc/refman/5.1/en/index-hints.html