采用以下表达式: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
那么就不会节省时间。
MySQL查询优化器尽可能使用索引,并使用限制性最强的索引,以消除尽可能多的行。
因此,在您的查询中,它将始终根据第一个索引列过滤记录,然后从非索引列中过滤记录。
同样在查询执行之前,MySQL消除了总是错误的代码(死代码)。
有关更多详细信息,请参阅:http://www.informit.com/articles/article.aspx?p=377652&seqNum=2