Tome la siguiente expresión: FALSE AND (expression)
¿La evaluación lógica de MySQL es floja/produce un cortocircuito en la cláusula JOIN?
Will MySQL evaluar la expresión o simplemente seguir adelante tan pronto como se ve FALSE
?
Algunos antecedentes context-- quería acelerar una consulta haciendo:
JOIN... ON (indexed_column1=indexed_column2 AND non_indexed_column_a=non_indexed_column_b)
Para información sobre por qué estoy haciendo esta consulta see this answer
Si se va a evaluar siempre non_indexed_column_a=non_indexed_column_b
entonces no se ahorra tiempo con eso.
Yo pensaría que el optimizador de consultas eliminaría este caso trivial en su totalidad. Sin embargo, en casos que no pueden eliminarse estáticamente, tales motores, como SQL Server (concedido, no MySQL) ** no garantizan una orden de evaluación **; ya que esto realmente les ayuda a ser más eficientes con índices y tal. Sería interesante saber cómo funciona la implementación específica de MySQL así que, +1. –
He añadido un poco más de contexto – babonk
http://stackoverflow.com/questions/789231/is-the-sql-where-clause-short-circuit-evaluated (no específica * * a MySQL, pero bien nunca-el- menos), http://stackoverflow.com/questions/4449105/mysql-and-condition –