П. Г. Демидова А. В. Зафиевский А. А. Короткин А. Н. Лататуев Базы данных Учебное пособие


Download 1.32 Mb.
Pdf ko'rish
bet45/94
Sana15.06.2023
Hajmi1.32 Mb.
#1487605
1   ...   41   42   43   44   45   46   47   48   ...   94
Bog'liq
Базы данных

3.9. Индексы 
Таблицы и представления являются наиболее используемыми 
из объектов, хранящихся в базе данных. Однако, помимо них, база 
данных хранит большое количество других объектов. Достаточно 
сказать, что в SQL Server оператор 
CREATE
насчитывает около 
полусотни разновидностей. Система MySQL гораздо скромнее, 
имея лишь около десятка разновидностей этого оператора. К 
сожалению, перечень объектов, используемых в различных СУБД, 
не поддается разумной классификации. Из всего их разнообразия 
мы рассмотрим лишь индексы, хранимые процедуры и триггеры. 
Основным назначением индексов является ускорение внутрен-
них операций, связанных с выборкой строк. Не вдаваясь в подроб-
ности, можно сказать, что индекс – это специальным образом 
организованный файл, отображающий содержимое той или иной 
таблицы, с помощью которого поиск данных по значениям в задан-
ных столбцах происходит гораздо быстрее, чем без использования 
индекса. По существу использование индекса является экономич-
ной заменой сортировки таблицы по заданным столбцам и 
последующего двоичного поиска. Создается индекс командой 
CREATE [UNIQUE] INDEX <имя> ON <объект> 
(<столбец> [DESC] [,…]) 
Здесь объект – это таблица или представление, а перечень 
столбцов указывает, по каким столбцам будет вестись отбор 
данных. Ключевое слово 
UNIQUE
означает, что в индекс вклю-
чается только одна строка из всех, имеющих одинаковые значе-
ния в указанных столбцах. 
DESC
означает, что сортировка в этом 
столбце ведется по убыванию значений (по умолчанию она 
ведется в порядке их возрастания). 
Интересно, что, несмотря на наличие команды создания 
индекса, в SQL отсутствуют команды, в которых индекс явно 
используется. Дело в том, что при отсутствии индексов СУБД 
автоматически создает их временные экземпляры при выполнении 
операторов SELECT, содержащих фразы ORDER BY, GROUP BY, 
а также во многих других случаях. После выполнения команды 
SELECT созданные индексы удаляются. Понятно, что если эта 
операция производится часто, то производительность системы 
уменьшается. Если же требуемый индекс уже существует как 
постоянный, то система использует его, не создавая и не удаляя 


77 
временный индекс. Узнать, какие индексы используются системой 
чаще всего, можно, использовав системную утилиту мониторинга 
(свою в каждой СУБД), и по ее отчету определить, какие индексы 
должны быть созданы на постоянной основе. 
Следует дополнительно отметить, что наличие постоянных 
индексов в целом замедляет работу системы, так как при 
добавлении или удалении строк таблицы изменения должны быть 
внесены и во все связанные с таблицей индексы. Кроме того, при 
интенсивной модификации таблицы (вставке – удалении строк) 
индексы «портятся» – перестают быть сбалансированными, что 
уменьшает эффективность их использования. Для восстановления 
балансировки индекс должен быть построен заново, что может 
быть, в частности, сделано его удалением и повторным созда-
нием. Поэтому еще раз стоит подчеркнуть, что вопрос создания и 
использования индексов весьма творческий и окончательно 
может быть решен только в процессе эксплуатации системы. 
Удаляется индекс командой 
DROP INDEX <имя> ON < объект > . 
Команды модификации индекса существуют не во всех 
СУБД, а в тех, где существуют, значительно отличаются друг от 
друга. В качестве примера такой команды можно привести 
простейший вариант этой команды в SQL Server: 
ALTER INDEX <имя> ON <объект> REBUILD 
Эта команда по существу эквивалентна удалению и 
повторному созданию индекса с тем же описанием. 

Download 1.32 Mb.

Do'stlaringiz bilan baham:
1   ...   41   42   43   44   45   46   47   48   ...   94




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling