Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Уточнение определения индексов для MS SQL Server.




В MS SQL Server индекс является структурой на диске, которая связана с таблицей или представлением и ускоряет получение строк из таблицы или представения.

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

Кластеризованный:

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

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

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

Некластеризованный:

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

- Указатель из строки индекса в некластеризованном индексе, который указывает на строку данных, называется указателем строки. Структура указателя строки зависит от того, хранятся ли страницы данных в куче или в кластеризованной таблице. Для кучи указатель строки является указателем на строку. Для кластеризованной таблицы указатель строки данных является ключом кластеризованного индекса.

Создание кластеризованного индекса.

Кластеризованные индексы создаются ограничениями PRIMARY KEY и UNIQUE.

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

В столбце первичного ключа значения NULL не допускаются.

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

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

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

Некластеризованные индексы создаются следующим образом:

- При создании ограничения PRIMARY KEY и UNIQUE. Если кластеризованный индекс в таблице еще не создан, а уникальный некластеризованный индекс еще не указан, то при создании ограничения PRIMARY KEY в одном или нескольких столбцах автоматически создается уникальный кластеризованный индекс. В столбце первичного ключа недопустимы значения NULL.

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

- Индекс, не зависящий от ограничения. По умолчанию некластеризованный индекс создается в том случае, если ранее не был задан кластеризованный индекс. В каждой таблице можно создать не более 249 некластеризованных индексов. К ним относятся индексы, созданные с помощью ограничений UNIQUE или PRIMARY и не содержащие XML-индексы.

Ограничения (Constraints).

Ограничения являются бизнес логикой, которую контролирует для Вас сервер баз данных. Они ограничивают возможные значения, которые может ввести пользователь в определённые столбцы, контролируют целостность базы данных (referential integrity). При создании ограничений в дизайнере баз данных создаются гарантии соответствия создаваемых или изменяемых таблиц стандартам ANSI.

MS SQL Server позволяет создавать пять типов ограничений:

- Primary Key Constraints (Ограничение первичного ключа);

- Unique Constraints (Ограничение уникальности);

- Foreign Key Constraints (Ограничение внешнего ключа);

- Check Constraints (правила проверки);

- Default Constraints (значения по умолчанию).

Ограничение первичного ключа (Primary key constraints).

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

Создание или изменение ограничения PRIMARY KEY.

При создании таблицы в ее определении может быть указано ограничение PRIMARY KEY. Если таблица уже существует, ограничение PRIMARY KEY может быть добавлено только в том случае, если для таблицы еще не определено ни одного такого ограничения. У таблицы может быть только одно ограничение PRIMARY KEY.

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

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

Свойство IDENTITY.

Столбец первичного ключа является столбцом идентификаторов.

Реализовать столбцы идентификаторов можно при помощи свойства IDENITY. Это позволяет разработчику указать как начальное значение идентификатора для первой строки, вставляемой в таблицу (свойство Начальное значение идентификатора), так и увеличение (свойство Шаг приращения идентификатора), добавляемое к начальному значению для определения последующих номеров идентификаторов. При вставке значений в таблицу со столбцом идентификаторов SQL Server 2005 Database Engine автоматически формирует следующее значение идентификатора, добавляя значение шага приращения идентификатора к начальному значению.

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

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...