Как правило, порядок вычисления выражения не установлен в SQL.
СУБД могут свободно оценивать в любом порядке, поскольку они могут оптимизировать запрос. Например:
Если таблица имеет индекс на job_title
, движок может FIRST использовать job_title
в качестве "доступа", а THEN использовать marital_status
и gender
как "фильтрация".
В качестве альтернативы, если таблица имеет индекс на gender
, двигатель может FIRST использовать gender
в качестве «доступа» и THEN использовать marital_status
и job_title
как "фильтрация".
Вы четко видите разницу между доступом и фильтром? Всем механизмам нужен «предикат доступа» для извлечения данных, а затем они используют «предикаты фильтра», чтобы выбрать, какие строки должны быть возвращены.
Иногда нам хотелось бы знать порядок вычисления выражения, особенно для логических условий короткого замыкания. Это не работает в SQL - декларативном языке - так же, как в императивных языках (Java, PHP, C # и т. Д.)