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



Попробуйте наш инструмент устранения неполадок

В SQL Server существует два типа индексов; Кластерные и некластеризованные индексы. И кластерные, и некластеризованные индексы имеют одинаковую физическую структуру. Более того, оба они хранятся в SQL Server в виде структуры B-Tree.



Кластерный индекс:

Кластеризованный список - это особый тип индекса, который переупорядочивает физическое хранение записей в таблице. В SQL Server индексы используются для ускорения операций с базой данных, что обеспечивает высокую производительность. Таким образом, таблица может иметь только один кластеризованный индекс, что обычно выполняется по первичному ключу. Листовые узлы кластеризованного индекса содержат «Страницы данных». Таблица может иметь только один кластерный индекс.



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



Создание базы данных

Для создания базы данных. Щелкните правой кнопкой мыши на «Базы данных» в проводнике объектов и выберите «Новая база данных» вариант. Введите имя базы данных и нажмите ОК. База данных создана, как показано на рисунке ниже.

Создание таблицы с использованием представления дизайна

Теперь мы создадим таблицу с именем 'Работник' с первичным ключом в режиме конструктора. На рисунке ниже мы видим, что мы назначили в первую очередь поле с именем «ID», и мы не создали никакого индекса для таблицы.



Создание таблицы с именем «Сотрудник» с идентификатором в качестве первичного ключа.

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

ИСПОЛЬЗУЙТЕ [тест] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo]. [Employee] ([ID] [int] IDENTITY (1,1) NOT NULL, [Dep_ID] [int] NULL, [Name] [ varchar] (200) NULL, [электронная почта] [varchar] (250) NULL, [city] [varchar] (250) NULL, [адрес] [varchar] (500) NULL, CONSTRAINT [Primary_Key_ID] PRIMARY KEY CLUSTERED ([ID ] ASC) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY] GO

Результат будет следующим.

Создание таблицы с именем «Сотрудник» с идентификатором в качестве первичного ключа.

Приведенный выше код создал таблицу с именем 'Работник' с полем ID, уникальный идентификатор в качестве первичного ключа. Теперь в этой таблице кластеризованный индекс будет автоматически создан по идентификатору столбца из-за ограничений первичного ключа. Если вы хотите увидеть все индексы в таблице, запустите хранимую процедуру «Sp_helpindex». Выполните следующий код, чтобы увидеть все индексы в таблице с именем 'Работник'. Эта процедура хранения принимает имя таблицы в качестве входного параметра.

ИСПОЛЬЗОВАТЬ тест EXECUTE sp_helpindex Сотрудник

Результат будет следующим.

«Sp_helpindex» покажет все индексы в таблице сотрудников.

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

Просмотр всех индексов в таблице

Поскольку это кластерный индекс, логический и физический порядок индекса будет таким же. Это означает, что если запись имеет идентификатор 3, она будет сохранена в третьей строке таблицы. Аналогичным образом, если пятая запись имеет идентификатор 6, она будет сохранена в 5thрасположение стола. Чтобы понять порядок записей, вам необходимо выполнить следующий скрипт.

ИСПОЛЬЗУЙТЕ [тест] GO SET IDENTITY_INSERT [dbo]. [Employee] ON INSERT [dbo]. [Employee] ([ID], [Dep_ID], [Name], [email], [city], [address]) VALUES ( 8, 6, N'Humbaerto Acevedo