Подтвердить что ты не робот

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

Индексированные упорядоченные таблицы (IOT) - это таблицы, хранящиеся в структуре индекса. Если таблица сохранена в куче неорганизован, данные в IOT сохраняются и сортируются по первичному ключу (данные являются индексом). IOT ведут себя так же, как "обычные" таблицы, и вы используете тот же SQL для доступа к ним.

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

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

4b9b3361

Ответ 1

В основном индекс-организованная таблица представляет собой индекс без таблицы. Поэтому, если у вас есть таблица, столбцы которой состоят из первичного ключа и не более одного столбца, то у вас есть возможный кандидат для ИНДЕКС-ОРГАНИЗАЦИИ.

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

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

Ответ 2

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

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

Ответ 3

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

  • "маленькие" таблицы типа "lookup" (например, часто запрашиваемые, часто обновляемые, вписываются в относительно небольшое количество блоков)
  • любая таблица, в которой вы уже собираетесь иметь индекс, который все равно охватывает все столбцы (т.е. может также сохранить пространство, используемое таблицей, если индекс дублирует 100% данных)

Ответ 4

Из руководства Oracle Основные понятия:

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

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

мы можем выдвинуть гипотезу на весь день, но пока вы его не измерите, вы никогда не будете знать наверняка.

Ответ 5

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

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

Ответ 6

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

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

Ответ 7

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

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

Ответ 8

Индексированная таблица - в отличие от обычной таблицы - имеет свой собственный способ структурирования, хранения и индексирования данных.

Индексированные таблицы (IOT) - это индексы, которые фактически хранят данные, которые индексируются, в отличие от индексов, которые хранятся где-то еще и имеют ссылки на фактические данные.