Я хотел бы запросить таблицу с миллионом записей для клиентов с именем «FooBar», которые имеют записи, датированные 7-24-2016 годами. В таблице содержится 10 дней данных.В Oracle SQL я могу запросить раздел таблицы вместо целой таблицы, чтобы заставить ее работать быстрее?
select *
from table
where customer = 'FooBar'
and insert_date between to_date('2016-07-24 00:00:00', 'YYYY-MM-DD HH24:MI:SS') and to_date('2016-07-24 23:59:59', 'YYYY-MM-DD HH24:MI:SS');
Проблема с запросом выше заключается в том, что требуется некоторое время для запуска. Я бы хотел, чтобы он работал быстрее.
Стол разделен на 24 часа. Могу ли я сфокусировать запрос на табличных разделах? Это сделает запрос быстрее?
select *
from partition-7-24-2016
where customer = 'FooBar';
Oracle должен выбирать правильные разделы для запроса. –
Что такое план запроса? Является ли Oracle фактически обрезкой разделов автоматически? Есть ли локальный индекс на 'customer'? Если в таблице содержится всего 10 дней данных, разделение разделов по-прежнему потребует полного сканирования раздела, в котором 10% данных в таблице, что, по-видимому, много. Предполагая, что «клиент» является достаточно избирательным, индекс «клиент» будет гораздо большим преимуществом, чем разделение. –