Когда я должен использовать Индекс Oracle Организованная Таблица? Или, когда не был должен я?

Организованные Таблицы индекса (IOTs) являются таблицами, хранимыми в индексной структуре. Принимая во внимание, что таблица, хранимая в "куче" не организована, данные в IOT хранятся и сортируются по первичному ключу (данные являются индексом). IOTs ведут себя точно так же, как “регулярные” таблицы, и Вы используете тот же SQL для доступа к ним.

Каждая таблица в надлежащей реляционной базе данных, как предполагается, имеет первичный ключ... Если каждая таблица в моей базе данных имеет первичный ключ, я должен всегда использовать организованную таблицу индекса?

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

34
задан Brian Tompsett - 汤莱恩 30 October 2016 в 17:44
поделиться

6 ответов

Из руководства Oracle Concepts :

Таблицы с индексированием полезны, когда связанные фрагменты данных должны быть сохранены вместе или данные должны быть физически хранятся в определенном порядке. Этот тип таблицы часто используется для информации поисковый, пространственный (см. «Обзор Oracle Spatial ") и OLAP. приложения (см. «OLAP»).

Этот вопрос от AskTom также может представлять некоторый интерес, особенно когда кто-то дает сценарий, а затем спрашивает, будет ли IOT работать лучше, чем таблица, организованная в кучу. Том отвечает:

мы можем предположить все целый день, но пока ты его не измеришь, ты никогда не будешь знаю точно.

8
ответ дан 27 November 2019 в 17:01
поделиться

Я считаю следующие виды таблиц отличными кандидатами для IOT:

  • «маленькие» таблицы типа «поиск» (например, часто запрашиваемые, нечасто обновляемые, умещаются в относительно небольшом количестве блоков)
  • любая таблица, у которой вы уже собираетесь иметь индекс, который в любом случае покрывает все столбцы (то есть может также сэкономить пространство, используемое таблицей, если индекс дублирует 100% данных)
9
ответ дан 27 November 2019 в 17:01
поделиться

В основном таблица с организацией по индексу - это индекс без таблицы. Итак, если у вас есть таблица, столбцы которой состоят из первичного ключа и не более одного другого столбца, у вас есть возможный кандидат на INDEX ORGANIZED.

Но если вы задумываетесь о необходимости дополнительных индексов для столбцов, не являющихся первичными ключами, то вам, вероятно, лучше использовать обычную таблицу кучи. Таким образом, поскольку большинству таблиц, вероятно, требуются дополнительные индексы, большинство таблиц не подходят для IOT.

На практике таблицы, организованные по индексу, чаще всего являются справочными данными, поиском кода. Таблицы приложений почти всегда организованы в виде кучи.

19
ответ дан 27 November 2019 в 17:01
поделиться

Я бы рассмотрел их для очень узких таблиц (таких как таблицы соединения, используемые для разрешения таблиц "многие ко многим"). Если (практически) все столбцы в таблице все равно будут в индексе, то почему бы вам не использовать IOT.

Небольшие таблицы могут быть хорошими кандидатами для IOT, как обсуждал Ричард Фут здесь

13
ответ дан 27 November 2019 в 17:01
поделиться

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

Кроме того, существует множество ограничений относительно того, какие другие функции базы данных могут и не могут использоваться с таблицами, организованными по индексу - я напомню, что по крайней мере в одной версии нельзя было использовать логические резервные базы данных с таблицами, организованными по индексу. Таблица с организацией по индексу - не лучший выбор, если она не позволяет использовать другие функции.

1
ответ дан 27 November 2019 в 17:01
поделиться

Я не могу как таковой комментировать IOT, однако, если я читаю это правильно, то они такие же, как «кластерный индекс» в SQL Server. Обычно вам следует подумать о том, чтобы не использовать такой индекс, если ваш первичный ключ (или значения, которые вы индексируете, если это не первичный ключ), вероятно, будут распределены довольно случайным образом, поскольку эти вставки могут привести к множеству разделений страниц ( дорогой).

Индексы, такие как идентификационные столбцы (последовательности в Oracle?) И даты «около текущей даты», как правило, являются хорошими кандидатами для таких индексов.

-1
ответ дан 27 November 2019 в 17:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: