MySQL中的条件执行顺序

wya*_*att 9 mysql database

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

SELECT * FROM `table` WHERE `field_1` = 1 AND `field_2` LIKE '%term%';
Run Code Online (Sandbox Code Playgroud)

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

Tro*_*ott 7

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

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

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

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


gbn*_*gbn 7

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

SQL是声明性的:您告诉优化器您想要什么,而不是如何操作.

程序/命令式语言(.net,Java,php等)中,您可以说明如何以及将首先选择评估哪种条件.

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