Създаване на клъстерирани и неклъстерирани индекси в SQL Server



Опитайте Нашия Инструмент За Премахване На Проблемите

В SQL Server съществуват два вида индекси; Клъстерирани и неклъстерирани индекси. Както клъстерните индекси, така и неклъстерираните индекси имат еднаква физическа структура. Освен това и двете се съхраняват в SQL Server като структура на B-Tree.



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

Клъстерираният списък е определен тип индекс, който пренарежда физическото съхранение на записи в таблицата. В рамките на SQL Server индексите се използват за ускоряване на операциите с бази данни, което води до висока производителност. Следователно таблицата може да има само един клъстериран индекс, който обикновено се прави на първичния ключ. Листните възли на клъстериран индекс съдържат „Страници с данни“. Таблица може да притежава само един клъстериран индекс.



Нека създадем клъстерен индекс, за да имаме по-добро разбиране. На първо място, трябва да създадем база данни.



Създаване на база данни

За да създадете база данни. Щракнете с десния бутон върху „Бази данни“ в изследовател на обекти и изберете „Нова база данни“ опция. Въведете името на базата данни и кликнете върху ok. Базата данни е създадена, както е показано на фигурата по-долу.

Създаване на таблица с помощта на изгледа на дизайна

Сега ще създадем таблица с име „Служител“ с първичния ключ, като използвате изгледа на дизайна. На снимката по-долу можем да видим, че сме присвоили предимно на файла с име „ID“ и не сме създали никакъв индекс на таблицата.



Създаване на таблица с име „Служител“ с ID като първичен ключ

Можете също да създадете таблица, като изпълните следния код.

ИЗПОЛЗВАЙТЕ [тест] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo]. [Служител] ([ID] [int] IDENTITY (1,1) NOT NULL, [Dep_ID] [int] NULL, [Name] [ varchar] (200) NULL, [имейл] [varchar] (250) NULL, [град] [varchar] (250) NULL, [адрес] [varchar] (500) NULL, CONSTRAINT [Primary_Key_ID] ПЪРВИЧЕН КЛЮЧ КЛАСТЕРИРАН ([ID ] ASC) С (PAD_INDEX = ИЗКЛ., STATISTICS_NORECOMPUTE = ИЗКЛ., IGNORE_DUP_KEY = ИЗКЛ., ALLOW_ROW_LOCKS = ВКЛ., ALLOW_PAGE_LOCKS = ВКЛ.) [ОСНОВНО]) ВКЛ.

Резултатът ще бъде както следва.

Създаване на таблица с име „Служител“ с ID като първичен ключ

Горният код е създал таблица с име „Служител“ с поле ID, уникален идентификатор като първичен ключ. Сега в тази таблица клъстерираният индекс ще бъде създаден автоматично върху идентификатор на колона поради ограничения на първичния ключ. Ако искате да видите всички индекси в таблица, изпълнете съхранената процедура “Sp_helpindex”. Изпълнете следния код, за да видите всички индекси в таблица с име „Служител“. Тази процедура за съхранение приема име на таблица като входен параметър.

ИЗПОЛЗВАЙТЕ ИЗПЪЛНЕТЕ sp_helpindex Служител

Резултатът ще бъде както следва.

“Sp_helpindex” ще покаже всички индекси в таблицата на служителите.

Друг начин за преглед на индексите на таблици е да отидете на „Маси“ в обект изследовател. Изберете таблицата и я изразходвайте. В папката индекси можете да видите всички индекси, свързани с тази конкретна таблица, както е показано на фигурата по-долу.

Преглед на всички индекси в таблицата

Тъй като това е клъстерираният индекс, така логическият и физическият ред на индекса ще бъдат еднакви. Това означава, че ако записът има идентификатор 3, той ще се съхранява в третия ред на таблицата. По същия начин, ако петият запис има идентификатор 6, той ще се съхранява в 5тиместоположение на масата. За да разберете подреждането на записите, трябва да изпълните следния скрипт.

ИЗПОЛЗВАЙТЕ [тест] GO SET IDENTITY_INSERT [dbo]. [Служител] НА ВЪВЕЖДАНЕ [dbo]. [Служител] ([ID], [Dep_ID], [Име], [имейл], [град], [адрес]) ЦЕННОСТИ ( 8, 6, N'Humbaerto Acevedo