Когда нужно создавать индексы




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

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

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

 

Типы индексов

Кластерные индексы

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

Некластерные индексы

– наиболее типичные представители семейства индексов.

В отличие от кластерных, они не перестраивают физическую структуру таблицы, а лишь организуют ссылки на соответствующие строки.

 

Кластерные индексы

Кластерные индексы могут дать существенное увеличение производительности поиска данных даже по сравнению с обычными индексами.

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

В таблице может быть определен только один кластерный индекс.

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

Кластерный индекс может включать несколько столбцов. Однако количество таких столбцов рекомендуется по возможности свести к минимуму.

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

Для интенсивно изменяемых столбцов лучше подходит некластерный индекс.

При создании в таблице первичного ключа (PRIMARY KEY) сервер автоматически создает для него кластерный индекс, если его не существовало ранее или если при определении ключа не был явно указан другой тип индекса.

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

 

Некластерные индексы

Для идентификации нужной строки в таблице некластерный индекс организует специальные указатели, включающие в себя:

•информацию об идентификационном номере файла, в котором хранится строка;

•идентификационный номер страницы соответствующих данных;

•номер искомой строки на соответствующей странице;

•содержимое столбца.

 

В большинстве случаев следует ограничиваться 4-5 индексами.

 

Создание индекса

Индекс создается в случаях:

•автоматическое создание индекса при создании первичного ключа;

•автоматическое создание индекса при определении ограничения целостности UNIQUE;

•создание индекса с помощью команды CREATE INDEX.

 

CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ]

 

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

 

[ASC|DESC][,...n])

 

[[,] DROP_EXISTING]

 

[ON имя_группы_файлов ]

 

Параметр UNIQUE используется при необходимости ввода в определенное поле только уникальных значений.

При указании этого ключевого слова будет создан уникальный индекс.

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

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

Параметр STATISTICS_NORECOMPUTE определяет функции автоматического обновления статистики для таблицы.

Параметр имя_группы_файлов позволяет осуществить выбор файловой группы, в которой будет находиться создаваемый индекс.

Использование индекса из другой файловой группы повышает производительность некластерных индексов в связи с параллельностью выполнения процессов ввода/вывода и работы с самим индексом.

 

Удаление индекса

DROP INDEX 'имя_индекса'[,...n]

 


Представления

Представления, или просмотры (VIEW), представляют собой временные, производные (иначе - виртуальные) таблицы и являются объектами базы данных, информация в которых не хранится постоянно, как в базовых таблицах, а формируется динамически при обращении к ним.

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

Представление не может существовать само по себе, а определяется только в терминах одной или нескольких таблиц.

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

Для хранения представления используется только оперативная память.

В отличие от других объектов базы данных представление не занимает дисковой памяти за исключением памяти, необходимой для хранения определения самого представления.

 



Поделиться:




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

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


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