понеділок, 9 лютого 2015 р.

Индексы и функции по индексным полям

Стандартная ситуация: выборка данных на дату с использованием trunc в условии. Поле с датой проиндексировано – данные должны получаться быстро, НО:
План запроса:

Тот же запрос, немного переделанный – на выходе те же данные, но:
План:

Почему так происходит? – Когда используем любую функцию по проиндексированной колонке – индекс не работает.
Варианты решения :
1 – использовать between
2 – сделать индекс для функции trunc(«поле с датой»). Вот результаты:
- без индекса по функции trunc:

- с индексом по функции:

CPU cost уменьшилось в 1789 раз
Cost – в 30 раз
IO Cost – в 26 раз

Немає коментарів:

Дописати коментар