10

采用以下表达式:FALSE AND (expression)

MySQL 会评估表达式还是一看到就继续FALSE

一些背景上下文——我想通过执行以下操作来加快查询速度:

JOIN... ON (indexed_column1=indexed_column2 AND non_indexed_column_a=non_indexed_column_b)

有关我为什么要进行此查询的背景,请参阅此答案

如果它总是会评估non_indexed_column_a=non_indexed_column_b,那么就不会节省任何时间。

4

1 回答 1

3

MySQL 查询优化器尽可能使用索引并使用最严格的索引以消除尽可能多的行。

因此,对于您的查询,它将始终根据第一个索引列过滤记录,然后从非索引列中过滤记录。

同样在查询执行之前,MySQL 消除了总是错误的代码(死代码)。

有关详细信息,请参阅:http ://www.informit.com/articles/article.aspx?p=377652&seqNum=2

于 2012-09-05T07:27:55.183 回答