2015-02-09 6 views
1

Мы ожидаем нулевые значения в определенном столбце. Мы хотели бы также зафиксировать их на выходе. Возможны два значения, отличные от нуля. Это WE и EA. Итак, из приведенного ниже синтаксиса, который лучше работает?Что лучше в отношении производительности базы данных?

…( "Src_Dtl"."REGN" not in ('WE','EA') or 
     "Src_Dtl"."REGN" is null)… 

или

...(coalesce(CVRG_REGN, ‘WE’))... 

Спасибо заранее.

+0

Почему вы не можете делать это, проверяя его, выполняя оба запроса или проверяя план выполнения? – Rocketq

+0

col не в («WE», «EA») никогда не будет TRUE, потому что либо значение WE, либо EA, или это значение NULL, что приводит к NULL. То есть IS NULL достаточно. Но идите с COALESCE, так как это очень удобно! – jarlh

ответ

0

Null values ​​всегда возвращает false для сравнения, поэтому не в ('a', 'b') нулевое сравнение вернет false, чтобы оно не включалось. Мы вынуждены добавить второе предложение или что-то недействительно. Это две операции с данными.

Функция coalesce говорит, что дает мне первое ненулевое значение в списке. Это одна операция (проверьте, имеет ли значение значение null) и имеет два возможных результата. Поскольку это одна операция, она выполняется быстрее, чем выполнение двух операций.

Смежные вопросы