2014-09-30 1 views
1

Я разделил таблицу на ежемесячную базу на столбце даты. Я также переместил индекс этой таблицы от глобального до локального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 вместо локального индекса?

ответ

1

Похоже, что таблица разделена на одну колонку. В этом случае лучше всего сканировать ВСЕ строки из одного раздела с помощью FILL SCAN, а читать каждую строку из одного раздела индекса, а затем читать весь блок таблицы по rowid. Если у вас есть раздел по одному столбцу, обычно вам не нужно индексировать его (если только вы не создаете локальный уникальный составной индекс).

+0

Спасибо за ваш непосредственный вход. Но запрос после раздела занимает вдвое больше времени до его разбиения. Если я использую подсказку индекса, чтобы использовать индекс, я могу увидеть chnage в плане выполнения, где он использует индекс. Любая идея, если этот намек может помочь с точки зрения сокращения времени исполнения. (PS-код все еще не помещен в более высокую среду) –

-1

Я все еще нахожусь на этом вопросе пожалуйста.

Что может быть причиной того, что если ключ раздела и локальный индекс находятся в одном столбце таблицы, то dataload занимает больше времени? Почему он не использует локальный индекс в этом случае? Есть ли какие-либо скрытые встроенные индексы, прикрепленные с помощью ключа partion, который использует oracle вместо локального индекса?

+0

Вы должны изменить свой вопрос, вместо того чтобы добавлять вопросы в качестве ответа. Это помогает держать вещи организованными, а также поднять вопрос и привлечь больше внимания. –