Opprette klyngede og ikke-klyngede indekser i SQL Server



Prøv Instrumentet Vårt For Å Eliminere Problemer

I en SQL Server eksisterer to typer indekser; Klyngede og ikke-klyngede indekser. Både klyngede indekser og ikke-klyngede indekser har samme fysiske struktur. Videre er begge lagret i SQL Server som en B-Tree-struktur.



Klynget indeks:

En klynget liste er en bestemt type indeks som omorganiserer den fysiske lagringen av poster i tabellen. Innen SQL Server brukes indekser for å øke hastigheten på databasedriften, noe som fører til høy ytelse. Tabellen kan derfor bare ha en gruppert indeks, som vanligvis gjøres på primærnøkkelen. En klynget indeks inneholder bladnoder “Datasider”. En tabell kan bare ha én gruppert indeks.



La oss lage en gruppert indeks for å få en bedre forståelse. Først og fremst må vi lage en database.



Databaseopprettelse

For å opprette en database. Høyreklikk på “Databaser” i objektutforsker, og velg “Ny database” alternativ. Skriv inn navnet på databasen og klikk på ok. Databasen er opprettet som vist i figuren nedenfor.

Tabelloppretting ved hjelp av designvisningen

Nå skal vi lage en tabell med navnet 'Ansatt' med hovednøkkelen ved å bruke designvisningen. Vi kan se på bildet nedenfor, vi har primært tilordnet den arkiverte navnet 'ID', og vi har ikke opprettet noen indeks på bordet.



Opprette en tabell med navnet “Ansatt” med ID som primærnøkkel

Du kan også opprette en tabell ved å utføre følgende kode.

BRUK [test] 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, [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

Resultatet blir som følger.

Opprette en tabell med navnet “Ansatt” med ID som primærnøkkel

Ovennevnte kode har opprettet en tabell med navnet 'Ansatt' med et ID-felt, en unik identifikator som primærnøkkel. Nå i denne tabellen vil en klynget indeks automatisk bli opprettet på kolonne-ID på grunn av primære nøkkelbegrensninger. Hvis du vil se alle indeksene på et bord, kjører du den lagrede prosedyren “Sp_helpindex”. Utfør følgende kode for å se alle indeksene på en tabell som heter 'Ansatt'. Denne butikkprosedyren tar et navn på tabellen som inndataparameter.

BRUK-test EXECUTE sp_helpindex Ansatt

Resultatet blir som følger.

“Sp_helpindex” viser alle indeksene på ansattbordet.

En annen måte å se tabellindekser på er å gå til “Bord” i objektutforsker. Velg tabellen og bruk den. I indekser-mappen kan du se alle indeksene som er relevante for den spesifikke tabellen, som vist i figuren nedenfor.

Viser alle indeksene i tabellen

Siden dette er den klyngede indeksen, vil den logiske og fysiske rekkefølgen på indeksen være den samme. Dette betyr at hvis en post har Id på 3, blir den lagret i tredje rad i tabellen. Tilsvarende, hvis den femte posten har en ID på 6, vil den bli lagret i 5thplassering av bordet. For å forstå rekkefølgen på poster, må du utføre følgende skript.

BRUK [test] GO SET IDENTITY_INSERT [dbo]. [Medarbeider] PÅ INSERT [dbo]. [Medarbeider] ([ID], [Dep_ID], [Navn], [e-post], [by], [adresse]) VERDIER ( 8, 6, N'Humbaerto Acevedo