Планирование и использование индексов

Использование индексов

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

Индекс представляет собой дополнение к таблице, помогающее ускорить по­иск необходимых данных за счет физического или логического их упорядочивания. Индекс является набором ссылок, упорядоченным по определенной колонке таблицы, которая называется индексируемой колонкой. Физически индекс представляет собой всего лишь упорядоченный набор значений из индексированной колонки с указателями на места физического размещения исходных строк в структуре базы данных. В индексе хранится не информация обо всей строке данных, а лишь ссылка на нее. Когда пользователь выполняет запрос, обращающийся к индексированной колонке, сервер автоматически использует индекс для поиска требуемых значений. Использование индексов позволяет избежать полного сканирования таблицы. В SQL Server 7.0 реализованы эффективные алгоритмы поиска нужного значения в упорядоченной последовательности данных. Ускорение поиска достигается именно за счет того, что данные представляются упорядоченными. Физически, в зависимости от типа используемого индекса, данные могут быть не упорядочены, а храниться в порядке их добавления в таблицу.

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

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

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

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

Наиболее эффективной структурой для поиска данных в машинном представлении являются В-деревья (B-tree). В SQL Server 7.0 реализовано несколько типов индексов.


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



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