Все ли части выражения SQL SERVER, использующие «ИЛИ», оцениваются?

Дано:

WHERE (@Id Is NULL OR @Id = Table.Id)

Если @Id равно нулю: выражение истинно. Учитывается ли вторая часть @Id = Table.Id? или достаточно, чтобы выражение было истинным при условии, что это первая часть (как в C #).

Это актуально из-за некоторых гораздо более сложных операторов ИЛИ, в которых важно знать, все ли части оцениваются.


ОБНОВЛЕНИЕ:

С тех пор я нашел этот синтаксис хорошей альтернативой

WHERE (Table.Id = ISNULL(@Id, Table.Id))

person CRice    schedule 19.11.2009    source источник
comment
В сложных запросах обе стороны могут выполняться параллельно ...   -  person tster    schedule 19.11.2009


Ответы (2)



Планы выполнения могут быть не такими уж хорошими с таким запросом. Оба будут оценены.

person JonH    schedule 19.11.2009
comment
Я запустил пример из блога, который опубликовал Ремус, выберите «Не делить на ноль!» где (@id равно NULL или 1/0 = 0) не вызывало ошибки, когда @id равно NULL - person CRice; 19.11.2009