Понятие индекса. Необходимость использования

Создание и удаление индексов.

Понятие индекса. Необходимость использования.

Индексы – это объекты баз данных, основная цель которых состоит в повышении производительности запросов.

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

Индекс SQL – это список всех значений в группе из одного или нескольких столбцов, упорядоченный в некотором приемлемом для данного типа данных смысле (например, в порядке возрастания для чисел или в алфавитном порядке для символьных строк). Каждое значение имеет указатель на строку в таблице, где это значение встречается.

Индексы работают неявно. Они в основном используются в запросах. При выполнении запроса СУБД решает, какие индексы надо применить и надо ли вообще.

Индексы не зависят от таблицы, для которой были созданы.

Необходимость использования индексов.

- Столбец часто используется в предложении WHERE или условии соединения;

- Столбец имеет широкий диапазон значений;

- Столбец содержит большое количество неопределенных значений;

- Два или столбцов часто используются вместе в предложении WHERE или условии соединения;

- Таблица большого размера, и предполагается, что большинство запросов будут выбирать менее 10-15% строк.

Когда не следует создавать индекс:

- Таблица небольшого размера.

- Столбцы не очень часто используются как параметры в условиях при запросе.

- Большая часть запросов будет выбирать более чем 10-15% строк.

- Таблица часто обновляется.

Создание и удаление индексов.

Индексы можно создать автоматически (при описании ограничений типа PRIMARY KEY или UNIQYE) или вручную как объект:

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

Пример 1:

CREATE INDEX Orderdate ON Orders(odate)

Определение индекса содержится в представлении словаря данных USER_INDEXES. Таблица USER_IND_COLUMNS содержат имя индекса, имя таблицы и имя столбца.

SELECT ic.index_name, ic.column_name, ic.column_position col_pos, ix.uniqueness

From user_indexes ix, user_ind_columns ic

WHERE ic.index_name=ix.index_name

AND ic.table_name=’имя_таблицы’

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

Пример 2:

SELECT *


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: