MS SQL-Server 2000. Сивохин А.В. - 46 стр.

UptoLike

Составители: 

В MS SQL Server 2000 реализованы следующие типы индексов:
а) кластерные индексы;
б) не кластерные индексы;
в) уникальные индексы.
Не кластерные индексы являются наиболее типичными индексами. В отличие от
кластерных, они не перестраивают физическую структуру таблицы, а лишь организуют ссылки на
соответствующие строки (указатели – row locator), которые включают в себя:
а) информацию об идентификационном номере файла (ID file), в котором храниться
строка;
б) идентификационный номер страницы данных;
в) номер соответствующей строки на странице;
г) содержимое столбца.
При определении кластерного индекса физическое расположение данных
перестраивается в соответствии со структурой индекса. Логическая структура таблицы в этом
случае представляет скорее словарь, чем индекс. Естественно, в таблице может быть определен
только один кластерный индекс. Он может включать несколько столбцов, которые наиболее часто
используются при поиске. Однако количество таких столбцов следует по возможности свести к
минимуму. Желательно, чтобы столбцы кластерного индекса не слишком часто изменялись, так
как из-за этого будут часто физически переупорядочиваться строки таблицы.
При создании в таблице первичного ключа с помощью ключевых слов PRIMARI KEY
сервер автоматически для него кластерный индекс, если он не был создан ранее или если при
определении ключа не был явно указан не кластерный индекс (NONCLUSTERED). Если в таблице
определяются другие индексы, то их указатели ссылаются не на физическое положение строки, а
на соответствующей элемент кластерного индекса.
Уникальные индексы гарантируют уникальность значений в индексируемом столбце. Он
является надстройкой для таблицы и может быть реализован как для кластерного, так и для не
кластерного индекса. Уникальные индексы используются редко, а для обеспечения целостности
данных следует использовать ограничения UNIQVE или PRIMARI KEY.
При определении индекса надо задавать параметр, который будет устанавливать
плотность записи данных на странице, - фактор заполнения (fill factor). Его значение определяет,
какой процент доступного пространства индексных страниц будет заполнен данными при
создании индекса
, а какой процент будет заполняться постепенно по мере загрузки данных в
таблицу. Если таблица используется только для чтения, то значение этого параметра надо задавать
близким к 100%, если таблица часто обновляется и дополняться, то значение фактора дополнение
должно быть задано небольшим.
Право на создание индекса имеет только владелец таблицы, и это
право не может быть
передано другому пользователю. Индекс можно создать одним из следующих способов:
а) с помощью команд языка Transact – SQL, которые предоставляют пользователю
максимум возможностей;
б) с помощью Enterprise Manager;
в) средствами мастеров Create Index Wizard и Index Tuning Wizard.
Создание индекса командами языка Transact – SQL производится следующим образом:
а) автоматически при создании первичного ключа, когда создается кластерный индекс
(если не указан параметр NONCLUSTERED);
б) автоматически при реализации ограничения целостности UNIQUE, когда создается не
кластерный индекс;
в) автоматически при создании таблицы, когда для столбца указываются параметры
CLUSTERED или NONCLUSTERED;
г) с помощью специальной команды CREATE INDEX.
Как только индексы созданы для таблицы, сервер обеспечивает их эффективное
автоматическое использование при поиске запрашиваемых или модифицируемых строк.
Пользователю не предоставляется никаких средств для указаний серверу, какие индексы и каким
способом использовать при выполнении того или иного запроса.
Формат команды для явного создания индекса следующий:
        В MS SQL Server 2000 реализованы следующие типы индексов:
        а) кластерные индексы;
        б) не кластерные индексы;
        в) уникальные индексы.

         Не кластерные индексы являются наиболее типичными индексами. В отличие от
кластерных, они не перестраивают физическую структуру таблицы, а лишь организуют ссылки на
соответствующие строки (указатели – row locator), которые включают в себя:
         а) информацию об идентификационном номере файла (ID file), в котором храниться
строка;
         б) идентификационный номер страницы данных;
         в) номер соответствующей строки на странице;
         г) содержимое столбца.
         При определении кластерного индекса физическое расположение данных
перестраивается в соответствии со структурой индекса. Логическая структура таблицы в этом
случае представляет скорее словарь, чем индекс. Естественно, в таблице может быть определен
только один кластерный индекс. Он может включать несколько столбцов, которые наиболее часто
используются при поиске. Однако количество таких столбцов следует по возможности свести к
минимуму. Желательно, чтобы столбцы кластерного индекса не слишком часто изменялись, так
как из-за этого будут часто физически переупорядочиваться строки таблицы.
         При создании в таблице первичного ключа с помощью ключевых слов PRIMARI KEY
сервер автоматически для него кластерный индекс, если он не был создан ранее или если при
определении ключа не был явно указан не кластерный индекс (NONCLUSTERED). Если в таблице
определяются другие индексы, то их указатели ссылаются не на физическое положение строки, а
на соответствующей элемент кластерного индекса.
         Уникальные индексы гарантируют уникальность значений в индексируемом столбце. Он
является надстройкой для таблицы и может быть реализован как для кластерного, так и для не
кластерного индекса. Уникальные индексы используются редко, а для обеспечения целостности
данных следует использовать ограничения UNIQVE или PRIMARI KEY.
         При определении индекса надо задавать параметр, который будет устанавливать
плотность записи данных на странице, - фактор заполнения (fill factor). Его значение определяет,
какой процент доступного пространства индексных страниц будет заполнен данными при
создании индекса, а какой процент будет заполняться постепенно по мере загрузки данных в
таблицу. Если таблица используется только для чтения, то значение этого параметра надо задавать
близким к 100%, если таблица часто обновляется и дополняться, то значение фактора дополнение
должно быть задано небольшим.
         Право на создание индекса имеет только владелец таблицы, и это право не может быть
передано другому пользователю. Индекс можно создать одним из следующих способов:
         а) с помощью команд языка Transact – SQL, которые предоставляют пользователю
максимум возможностей;
         б) с помощью Enterprise Manager;
         в) средствами мастеров Create Index Wizard и Index Tuning Wizard.
         Создание индекса командами языка Transact – SQL производится следующим образом:
         а) автоматически при создании первичного ключа, когда создается кластерный индекс
(если не указан параметр NONCLUSTERED);
         б) автоматически при реализации ограничения целостности UNIQUE, когда создается не
кластерный индекс;
         в) автоматически при создании таблицы, когда для столбца указываются параметры
CLUSTERED или NONCLUSTERED;
         г) с помощью специальной команды CREATE INDEX.
         Как только индексы созданы для таблицы, сервер обеспечивает их эффективное
автоматическое использование при поиске запрашиваемых или модифицируемых строк.
Пользователю не предоставляется никаких средств для указаний серверу, какие индексы и каким
способом использовать при выполнении того или иного запроса.
         Формат команды для явного создания индекса следующий: