Читайте также:
|
|
Oracle обеспечивает выполнение ограничения целостности UNIQUE или PRIMARY KEY для таблицы, создавая уникальный индекс для уникального или первичного ключа. Этот индекс создается автоматически, когда включается ограничение целостности. Когда выполняется CREATE TABLE или ALTER TABLE, для создания индекса не надо предпринимать никаких действий, но при желании можно указать предложение USING INDEX, чтобы контролировать его создание.
Чтобы включить ограничение целостности UNIQUE или PRIMARY KEY, создавая таким образом связанный с ним индекс, владелец таблицы должен иметь квоту табличного пространства, где будет храниться этот индекс, или системную привилегию UNLIMITED TABLESPACE. Индекс связанный с ограничением целостности всегда получает имя этого ограничения, если вы не укажете иное.
Параметры хранения для индексов связанных с ограничением целостности UNIQUE или PRIMARY KEY, можно устанавливать с помощью предложения USING INDEX. Следующий пример CREATE TABLE включает ограничение целостности PRIMARY KEY и задает параметры хранения связанного с ним индекса:
CREATE TABLE ALL_ORACLE_USERS ( ID NUMBER(5) PRIMARY KEY... LOCKED INTEGER) ENABLE PRIMARY KEY USING INDEX TABLESPACE ALL_ORACLE_IDX_TBS PCTFREE 0;Индексы на основе В*-дерева, или, как я их назвал, "обычные" индексы, — наиболее широко используемый тип индексной структуры в базе данных. По реализации они подобны двоичному дереву поиска. Цель их создания — минимизировать время поиска данных сервером Oracle. При наличии индекса по числовому столбцу, структура индекса может выглядеть так:
Блоки самого нижнего уровня в индексе, которые называют листовыми вершинами,
содержат все проиндексированные ключи и идентификаторы строк (rid на схеме), ссылающиеся на соответствующие строки. Промежуточные блоки над листовыми вершинами называют блоками ветвления. Они используются для переходов по структуре.
Индексы на основе битовых карт — это структуры, в которых хранятся указатели на множество строк, соответствующих одному значению ключа индекса, тогда как в структуре В*-дерева количество ключей индекса обычно примерно соответствует количеству
строк. В индексе на основе битовых карт записей очень мало, и каждая из них указывает на множество строк. В индексе на основе В*-дерева обычно имеется однозначное соответствие — запись индекса ссылается на одну строку.
Индексы целесообразно применять: если необходимо ускорить процесс поиска и выборки строк с заданными значениями, при этом данные должны горазда чаще считываться нежели изменяться.
• используйте индексы на основе В*-дерева по столбцу, если предполагается выбирать из таблицы по индексу лишь небольшую часть строк;
• используйте индекс на основе В*-дерева, если предполагается обработка множества строк таблицы и можно использовать индекс вместо таблицы.
Хорошо применимы для данных с большим количеством уникальных значений. Производительны в случае выборки не более 20% строк таблицы.
Индексы на основе битовых карт больше подходят для данных с небольшим количеством уникальных значений. Это данные, для которых при делении количества уникальных значений в строках на общее количество строк получается небольшое число (близкое к нулю). Индексы на основе битовых карт особенно хорошо подходят для сред с множеством
произвольных запросов, особенно, если запросы эти ссылаются произвольным образом на много столбцов или выбирают агрегированные значения типа COUNT.
Битовые индексы больше подходят для OLAP, абсолютно не подходя для OLTP.
Дата добавления: 2015-11-16; просмотров: 51 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Удаление таблиц | | | Последовательность СУБД Oracle и ее параметры. |