Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LektsiiNovye.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.92 Mб
Скачать

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

Теперь, получив представление о структуре индексов, рассмотрим наиболее общие понятия индексирования.

Индексные ключи

Индексным ключом называется колонка или колонки, которые используются для формирования индекса. Индексный ключ – это значение, позволяющее быстро находить строку, содержащую нужные данные (подобно статье индекса [алфавитного указателя] в книге, указывающей определённую тему в тексте). Для доступа к данным строки через индекс следует включить значение или значения индексного ключа в качестве условия отбора в блок WHERE нужного оператора SQL. Способ выполнения этого процесса зависит от того, какой это индекс – простой или составной.

Простые индексы

Простой индекс определяется только по одной колонке таблицы (рис. 6.4). Чтобы индекс использовался оператором SQL, ссылка на эту колонку должна быть включена в блок WHERE данного оператора.

рис. 6.4. Простой индекс

В зависимости от типа сохраняемых данных, количества уникальных элементов в колонке и типа используемых операторов SQL простой индекс может оказаться весьма эффективен. В других случаях необходим составной индекс. Например, если строится индекс для адресной книги с тысячами имён и адресов, то колонка state не слишком подходит для простого индекса, поскольку для каждого штата будет много записей. Однако, добавив к индексу колонки street и city, и сделав его тем самым составным индексом почти каждая запись становится уникальной. Это может оказаться полезным, если используются запросы поиска строк в соответствии с адресом.

Составные индексы

Составной индекс – это индекс, определённый более чем по одной колонке (рис. 6.5). Доступ к составному индексу может осуществляться с помощью одного или нескольких индексных ключей. В рамках SQL Server индекс может содержать до 16 колонок, и колонки ключей могут иметь длину до 900 байтов.

рис. 6.5. Составной индекс

Для запросов, включающих составной индекс, не требуется помещать все индексные ключи в предложение WHERE оператора SQL, но имеет смысл использовать более одного ключа. Например, если индекс создаётся по колонкам a, b и c какой-либо таблицы, то доступ к этому индексу можно осуществлять с помощью оператора SELECT, содержащего выражение (a АND b АND c), или (a АND b), или a. Конечно, использование более ограничивающего предложения WHERE, содержащего, например, выражение a АND b АND c, обеспечит более высокую производительность. Скорее всего, из базы данных будет считано меньшее количество строк, поскольку строки будет указаны более точно. Если использовать a АND b или просто a, то будет инициировано сканирование индекса.

Сканирование индекса возникает потому, что критерию поиска соответствует более чем одна запись индекса. При сканировании индекса происходит сканирование узлов внутри индекса для считывания нескольких записей данных. Кроме того, индекс лишь частично соответствует выбранному значению. Например, если индекс создан по колонкам a, b и c, а в запросе указано значение только для колонки a, то будут возвращены все удовлетворяющие этому значению строки для всех значений колонок b и c.

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]