Prendere la seguente espressione: FALSE AND (expression)
La valutazione logica MySQL è pigro/cortocircuitante nella clausola JOIN?
Sarà MySQL valutare l'espressione o semplicemente andare avanti, non appena vede FALSE
?
Alcuni retroscena context-- ho voluto velocizzare una query facendo:
JOIN... ON (indexed_column1=indexed_column2 AND non_indexed_column_a=non_indexed_column_b)
Per sfondo sul motivo per cui sto facendo questa domanda see this answer
Se è intenzione di valutare sempre non_indexed_column_a=non_indexed_column_b
quindi nessun tempo è stato salvato con quello.
penserei Query Optimizer eliminerebbe questo caso banale del tutto. Tuttavia, nei casi che non possono essere eliminati staticamente, tali motori, come SQL Server (concesso, non MySQL) ** non garantiscono un ordine di valutazione **; in quanto ciò li aiuta effettivamente a essere più efficienti con indici e simili. Sarebbe interessante sapere come funziona l'implementazione specifica di MySQL, +1. –
Ho aggiunto qualche altro contesto – babonk
http://stackoverflow.com/questions/789231/is-the-sql-where-clause-short-circuit-evaluated (non * specifico * a MySQL, ma buono mai-il- meno), http://stackoverflow.com/questions/4449105/mysql-and-condition –