Я разделил таблицу на ежемесячную базу на столбце даты. Я также переместил индекс этой таблицы от глобального до локальногоlocal Индексы в секционированной таблице не используются
Теперь запрос, который использует для выбора данных из этой таблицы собирается для диапазона индекса сканирования перед тем секционирования таблиц и создания локального индекса. Но тот же запрос идет для полного сканирования таблицы после изменения. Чтобы упомянуть здесь, у меня есть индекс и ключ раздела в том же столбце таблицы.
Может кто-нибудь, пожалуйста, сообщите, что может быть проблемой.
Запрос: План
SELECT * FROM USER.LOAN_BORROW
WHERE CALENDAR_DT = '25-SEP-2014'
Exec до изменения:
OPERATION OPTIONS
SELECT STATEMENT
FILTER
TABLE ACCESS BY INDEX ROWID
INDEX RANGE SCAN
Exec план после изменения:
OPERATION OPTIONS
SELECT STATEMENT
FILTER
PARTITION RANGE SINGLE
TABLE ACCESS FULL
Что может быть причиной того, что если ключ раздела и локальный индекс находятся в одном столбце таблицы, тогда dataload занимает больше времени? почему он не использует локальный индекс в этом случае? есть ли скрытые встроенные индексы, прикрепленные вместе с ключом partion, который использует oracle вместо локального индекса?
Спасибо за ваш непосредственный вход. Но запрос после раздела занимает вдвое больше времени до его разбиения. Если я использую подсказку индекса, чтобы использовать индекс, я могу увидеть chnage в плане выполнения, где он использует индекс. Любая идея, если этот намек может помочь с точки зрения сокращения времени исполнения. (PS-код все еще не помещен в более высокую среду) –