Take następujące wyrażenie: FALSE AND (expression)
Czy ocena logiki MySQL jest leniwy/występuje zwarcie w klauzuli JOIN?
Będzie MySQL ocena ekspresji lub po prostu przejść jak tylko widzi FALSE
?
Niektóre tła context-- chciałem przyspieszyć zapytanie wykonując:
JOIN... ON (indexed_column1=indexed_column2 AND non_indexed_column_a=non_indexed_column_b)
Na tle dlaczego robię to zapytanie see this answer
Jeśli to będzie zawsze oceniać non_indexed_column_a=non_indexed_column_b
to nie oszczędza czasu.
Myślę optymalizator kwerendy wyeliminuje tę trywialną sprawę całkowicie. Jednak w przypadkach, których nie można wyeliminować statycznie, takie silniki, takie jak SQL Server (przyznane, nie MySQL) ** nie gwarantują zamówienia oceny **; ponieważ to faktycznie pomaga im być bardziej wydajnym dzięki indeksom i tym podobnym. Ciekawe byłoby wiedzieć, jak działa specyficzna dla MySQL implementacja +1. –
Dodałem trochę więcej kontekstu – babonk
http://stackoverflow.com/questions/789231/is-the-sql-where-clause-short-circuit-evaluated (nie * specyficzne * do MySQL, ale dobre nigdy-nie- mniej), http://stackoverflow.com/questions/4449105/mysql-and-condition –