Oracle 12c — какой индекс следует использовать для таблицы с разделами и подразделами

У меня есть таблица из 500 миллионов записей в Oracle 12c. Таблица разделена на 1 столбец varchar и подразделена на другой столбец varchar.

Какие индексы следует использовать с запросами, которые используют эти 2 столбца в предложении Where?

Я предполагаю, что локальные секционированные индексы — лучший выбор, но хотел бы получить больше информации о том, когда это происходит и как лучше всего их создавать?


person Joe    schedule 14.11.2017    source источник


Ответы (1)


Oracle может выполнять удаление разделов. Это означает, что если ваш запрос имеет ключевой столбец (столбцы) раздела в предложении where, Oracle достаточно умен, чтобы запрашивать только те разделы, которые имеют отношение. В таком случае более полезен локальный секционированный индекс. потому что он «локален по отношению к разделу», т. е. индекс также разделен таким же образом, и Oracle будет читать только соответствующие записи индекса для тех разделов, которые уместны.

Однако если у вас есть запрос, в котором нет столбца (столбцов) ключа секции в предложении where, Oracle не может применить сокращение секции и не будет иметь другого выбора, кроме как сканировать все локальные секционированные индексы или, в худшем случае, всю таблицу для данных. Здесь пригодится глобальный секционированный индекс для тех столбцов, которые находятся в предложении where. В этом случае Oracle создает индекс по этим столбцам в разделах и точно знает, какие записи следует читать из каких разделов, которые подходят для предложения where оператора.

person gvenzl    schedule 14.11.2017