Стандартная ситуация: выборка данных на дату с использованием trunc в условии. Поле с датой
проиндексировано – данные должны получаться быстро, НО:
Тот же запрос, немного переделанный – на выходе те же данные, но:
План:
- без
индекса по функции trunc:
- с индексом по функции:
План запроса:
Тот же запрос, немного переделанный – на выходе те же данные, но:
План:
Почему так происходит? – Когда используем любую функцию по
проиндексированной колонке – индекс не работает.
Варианты решения :
1 – использовать between
2 – сделать индекс для функции trunc(«поле с датой»). Вот результаты:
- с индексом по функции:
CPU cost уменьшилось
в 1789 раз
Cost –
в 30 раз
IO Cost –
в 26 раз
Немає коментарів:
Дописати коментар