Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
на айфон. ответа по бд.doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
972.8 Кб
Скачать

34) Создание, изменение индекса в ms sql Server. Сравнение кластеризованных и некластеризованных индексов.

Оператор CREATE INDEX создает на указанной таблице или представлении индекс, основанный на заданных столбцах.

Синтаксическая структура оператора создания индекса соответствует такому же общему образцу, CREATE <object type> <object name>, как и многие другие операторы создания объектов

CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name

    ON <object> ( column [ ASC | DESC ] [ ,...n ] )

    [ INCLUDE ( column_name [ ,...n ] ) ]

[ WHERE <filter_predicate> ]

    [ WITH ( <relational_index_option> [ ,...n ] ) ]

    [ ON { partition_scheme_name ( column_name )

         | filegroup_name

         | default

         }

    ]

[ FILESTREAM_ON { filestream_filegroup_name | partition_scheme_name | "NULL" } ]

Обязательной является только конструкция ON <table or view name> (<column name>), a все остальные конструкции, которые следуют за ней, являются необязательными.

Оператор alter index

применяется исключительно для сопровождения индексов и не вносит никаких изменений в их структуру. Если же требуется изменить определение индекса, то необходимо либо уничтожить его с помощью оператора DROP, а затем создать, применив оператор CREATE, либо воспользоваться оператором CREATE с опцией DROP EXISTING=ON.

ALTER INDEX { index_name | ALL }

    ON < table or view name >

Оператор drop index

Оператор удаления индекса, DROP INDEX является несложным по своей структуре. Единственная действительно важная о особенность этого оператора состоит в том, что индекс - не автономный объект (он по существу определяется в составе определения таблицы), поэтому в операторе удаления необходимо указать не только индекс, но и таблицу, к которой он принадлежит.

Оператор DROP INDEX имеет следующий синтаксис:

DROP INDEX <table name>.<index name>

После выполнения этого оператора индекс становится недоступным.

Сравнение кластеризованных и некластеризованных индексов:

На каждой таблице может быть задан только один кластеризованный индекс. На каждой таблице может быть задано несколько некластеризованных индексов.

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

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

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