Понятие индекса

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

Селективность (selectivity) столбца — это процент строк, имеющих одинаковое значение для индексированного столбца. Селективность столбца высокая, если в нем мало одинаковые значений. Автоматически создаются индексы для первичных ключей или столбцов, для которых существует ограничение на уникальность значений. Эти индексы наиболее эффективны. Столбцы с малым количеством уникальных значений имеют низкую селективность, большинство распространенных способов организации индексов при поиске по столбцам с низкой селективностью не обеспечивают существенного ускорения.

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

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

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

Индексы бывают двух видов — простые и составные. Составной индекс — это индекс, включающий более чем один столбец. Можно совместно проиндексировать два или более столбца, каждый из которых обладает низкой селективностью, а пара их значений — высокой. Если все столбцы, используемые запросом, входят в составной индекс, то обращения к таблицам можно вовсе избежать — все данные будут считаны только из индекса. Для эффективного использования составного индекса необходимо, чтобы логические условия были наложены на ведущие столбцы индекса, то есть на те столбцы, которые были указаны первыми при создании индекса.

Как правило, в индексах хранятся значения индексируемых столбцов таблицы и физические адреса строк для каждого из хранимых значений столбца (столбцов). В Oracle у каждой строки таблицы есть собственный уникальный идентификатор ROWID, который полностью определяет ее физический адрес на диске. Чтобы найти строку в таблице по заданному значению столбца, необходимо найти соответствующие ROWID в индексе и затем сразу перейти к указанным ими строкам в таблице.

Как уже упоминалось, индексы являются вспомогательным объектом, поэтому они не поддерживаются стандартом SQL. Тем не менее, все СУБД используют индексы и больших принципиальных различий в политике использования индексов не наблюдается.

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

Далее мы остановимся на основных способах индексирования, принятых в Oracle.








Дата добавления: 2015-08-26; просмотров: 1097;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.