Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
43
Добавлен:
17.04.2018
Размер:
164.35 Кб
Скачать

Битовые индексы

Поскольку структура индекса В*-дерева оптимальна для индексирования столбца со многими уникальными значениями, логично предположить, что для столбца с малым числом уникальных значений может лучше подойти другая структура индекса. Например, столбец "пол", скорее всего, будет содержать одно из трех значений: "М" ("мужской"), "F" ("женский") или "U" ("Unknown" — "неизвестный"). Помещение столь малого количества уникальных значений в структуру В*-дерева не имеет смысла, поскольку подход "делить на подгруппы шаг за шагом", делающий В*-дерево столь удобным для поиска многовариантных значений, не даст большого выигрыша. В такой ситуации лучше использовать битовый индекс. Его устройство в несколько упрощенном виде показано на рис. 3.4.

Таблица базы данных Битовый индекс по столбцу GENDER (пол)

ROWNUM

LAST_NAME

GENDER

ROWNUM

FEMALE

MALE

UNKNOWN

1

Norton

F

1

1

2

Gutwirth

M

2

1

3

Trumble

M

3

1

4

Fletcher

M

4

1

5

Zoraster

F

5

1

6

Moss

M

6

1

7

Allen

F

7

1

8

Smith

U

8

1

Рис. 3.4. Организация записей в битовом индексе

Под кардинальностью (cardinality) понимается количество уникальных значений, которые может содержать столбец. Столбец с малым количеством уникальных значений (например, пол или значения типа истина/ложь) имеет низкую кардинальность. Столбец с большим количеством уникальных значений (например, цены или имена) имеет высокую кардинальность.

Для тех запросов SELECT, в которых конструкция WHERE содержит столбец с низкой кардинальностью, предварительное создание битового индекса может значительно сократить время получения ответов. Рост скорости обусловлен двумя факторами: во-первых, битовые индексы могут быть довольно компактными (поскольку для хранения бит требуется лишь малая часть того места, которое отводится другим типам данных в стандартном индексе), а во-вторых, значения" 1" или "0" могут анализироваться компьютером очень быстро.

Команда создания битового индекса практически идентична команде создания стандартного индекса; добавляется только слово "BITMAP", как показано в следующем примере:

CREATE BITMAP INDEX имя_индекса ON имя_таблицы(имя_столбца) ;

3.4. Обеспечение целостности данных с помощью ограничений

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

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

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

Соседние файлы в папке лекции оракл