суббота, 18 марта 2017 г.

Стоимость SAMPLE

Многие используют SAMPLE думая, что он выполняется быстрее и с меньшей нагрузкой на ЦП. Для тестирования этого утверждения, создадим тестовую таблицу Х

create table X
  as
select *
  from all_objects
/


После этого, выполним запрос на выборку всех данных

set autotrace traceonly explain




После этого, запустим запрос с SAMPLE




Как вы видите, мы хоть и выбираем 1% данных, но стоимость осталась практически таже. Это происходит из-за того, что идет сканирование всей таблицы случайным образом и выбирается только 1% данных.
Для уменьшения стоимости, укажем, что сканирование должно происходить только по блоку




Как вы можете видеть, стоимость запроса и время выполнения существенно уменьшилось.