Skapa klustrade och icke-klustrade index i SQL Server



Prova Vårt Instrument För Att Eliminera Problem

I en SQL Server finns två typer av index; Klusterade och icke-klusterade index. Både klusterindex och icke-klusterindex har samma fysiska struktur. Dessutom lagras båda i SQL Server som en B-Tree-struktur.



Clustered index:

En grupperad lista är en viss typ av index som ordnar om den fysiska lagringen av poster i tabellen. Inom SQL Server används index för att påskynda databasåtgärder, vilket leder till hög prestanda. Tabellen kan därför endast ha ett klusterindex, vilket vanligtvis görs på primärnyckeln. Ett klustrade indexs bladnoder innehåller ”Datasidor”. En tabell kan bara ha ett klusterindex.



Låt oss skapa ett grupperat index för att få en bättre förståelse. Först och främst måste vi skapa en databas.



Skapa databas

För att skapa en databas. Högerklicka på “Databaser” i objektutforskaren och välj “Ny databas” alternativ. Skriv in namnet på databasen och klicka på ok. Databasen har skapats enligt bilden nedan.

Tabellskapande med designvyn

Nu skapar vi en tabell med namnet 'Anställd' med huvudnyckeln genom att använda designvyn. Vi kan se på bilden nedan har vi tilldelat främst det arkiverade namnet “ID” och vi har inte skapat något index på bordet.



Skapa en tabell med namnet 'Anställd' med ID som primärnyckel

Du kan också skapa en tabell genom att köra följande kod.

ANVÄND [test] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo]. [Anställd] ([ID] [int] IDENTITET (1,1) INTE NULL, [Dep_ID] [int] NULL, [Namn] [ varchar] (200) NULL, [email] [varchar] (250) NULL, [city] [varchar] (250) NULL, [address] [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

Produktionen blir följande.

Skapa en tabell med namnet 'Anställd' med ID som primärnyckel

Ovanstående kod har skapat en tabell med namnet 'Anställd' med ett ID-fält, en unik identifierare som primärnyckel. Nu i den här tabellen skapas ett klusterindex automatiskt på kolumn-ID på grund av primära nyckelbegränsningar. Om du vill se alla index på en tabell kör du den lagrade proceduren “Sp_helpindex”. Kör följande kod för att se alla index i en tabell med namnet 'Anställd'. Denna lagringsprocedur tar ett tabellnamn som inmatningsparameter.

ANVÄNDNINGSTEST EXECUTE sp_helpindex Anställd

Produktionen blir följande.

“Sp_helpindex” visar alla index på anställdstabellen.

Ett annat sätt att visa tabellindex är att gå till “Bord” i objektutforskaren. Välj tabellen och förbrukar den. I indexmappen kan du se alla index som är relevanta för den specifika tabellen som visas i figuren nedan.

Visar alla index i tabellen

Eftersom detta är det klustrade indexet så kommer den logiska och fysiska ordningen på indexet att vara densamma. Det betyder att om en post har Id 3 kommer den att sparas i den tredje raden i tabellen. På samma sätt, om den femte posten har ett ID på 6, kommer den att lagras i 5thplaceringen av tabellen. För att förstå ordningen av poster måste du köra följande skript.

ANVÄND [test] GO SET IDENTITY_INSERT [dbo]. [Anställd] PÅ INSERT [dbo]. [Anställd] ([ID], [Dep_ID], [Namn], [e-post], [stad], [adress]) VÄRDEN ( 8, 6, N'Humbaerto Acevedo