2016-03-28 2 views
0

Я хотел бы создать индекс, основанный на функции, чтобы индексировать значения NULL в столбце таблицы oracle 11g.Что лучше для индекса на основе функции: NVL2 или DECODE?

Что делает лучше: NVL2 или DECODE?

NVL2(nr.processed_datetime,'Y','N')
или
DECODE(nr.processed_datetime,NULL,'N','Y')

+1

kordirko, вам нужно реверс один из ваших результатов: 'NVL2 (нуль, 2,1)' – ScrappyDev

+1

испытания Вы в ваша среда с вашими данными? Мне кажется невероятно маловероятным, что будет заметная разница в производительности (при условии, что ваши запросы будут использовать любую конструкцию, которую вы индексируете). –

+0

Конструкция индекса намного тяжелее, чем эти две функции, поэтому маловероятно, что вы можете увидеть существенную разницу. Что касается меня, то nvl2 здесь более естественен. –

ответ

0

Чтобы найти значение столбца равно нулю или не равно нулю вы нет необходимости использовать какую-либо функцию. в вашем SQL, где используется условие IS NULL или NOT NULL

Где nr.processed_datetime IS NULL; или Где nr.processed_datetime IS NOT NULL;

для лучшей производительности, вы можете просто клеть нормальный индекс по этому столбцу, который должен быть хорошо

+1

Oracle НЕ индексирует NULL. – ScrappyDev

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