Geclusterde en niet-geclusterde indexen maken in SQL Server



Probeer Ons Instrument Voor Het Oplossen Van Problemen

In een SQL Server bestaan ​​twee soorten indexen; Geclusterde en niet-geclusterde indexen. Zowel geclusterde indexen als niet-geclusterde indexen hebben dezelfde fysieke structuur. Bovendien worden ze allebei in SQL Server opgeslagen als een B-Tree-structuur.



Geclusterde index:

Een geclusterde lijst is een bepaald type index dat de fysieke opslag van records in de tabel opnieuw rangschikt. Binnen SQL Server worden indexen gebruikt om databasebewerkingen te versnellen, wat leidt tot hoge prestaties. De tabel kan daarom slechts één geclusterde index hebben, wat meestal wordt gedaan op de primaire sleutel. De bladknooppunten van een geclusterde index bevatten 'Datapagina's'. Een tabel kan slechts één geclusterde index bevatten.



Laten we een geclusterde index maken voor een beter begrip. Allereerst moeten we een database maken.



Database maken

Om een ​​database aan te maken. Klik met de rechtermuisknop op 'Databases' in objectverkenner en selecteer 'Nieuwe database' optie. Typ de naam van de database en klik op ok. De database is gemaakt zoals weergegeven in de onderstaande afbeelding.

Tafel maken met behulp van de ontwerpweergave

Nu gaan we een tabel maken met de naam 'Werknemer' met de primaire sleutel door de ontwerpweergave te gebruiken. We kunnen op de onderstaande afbeelding zien dat we primair zijn toegewezen aan het bestand met de naam 'ID' en dat we geen index op de tafel hebben gemaakt.



Creëren van een tabel met de naam 'Medewerker' met ID als de primaire sleutel

U kunt ook een tabel maken door de volgende code uit te voeren.

GEBRUIK [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, [stad] [varchar] (250) NULL, [adres] [varchar] (500) NULL, BEPERKING [Primary_Key_ID] PRIMAIRE SLEUTEL GECLUSTERD ([ID ] ASC) MET (PAD_INDEX = UIT, STATISTICS_NORECOMPUTE = UIT, IGNORE_DUP_KEY = UIT, ALLOW_ROW_LOCKS = AAN, ALLOW_PAGE_LOCKS = AAN) AAN [PRIMAIR]) AAN [PRIMAIR] GO

De output is als volgt.

Creëren van een tabel met de naam 'Medewerker' met ID als de primaire sleutel

De bovenstaande code heeft een tabel gemaakt met de naam 'Werknemer' met een ID-veld, een unieke identificatie als primaire sleutel. Nu in deze tabel wordt automatisch een geclusterde index gemaakt op kolom-ID vanwege primaire sleutelbeperkingen. Als u alle indexen op een tabel wilt zien, voert u de opgeslagen procedure uit 'Sp_helpindex'. Voer de volgende code uit om alle indexen in een tabel met de naam 'Werknemer'. Deze opslagprocedure heeft een tabelnaam als invoerparameter.

GEBRUIK test EXECUTE sp_helpindex Medewerker

De output is als volgt.

'Sp_helpindex' toont alle indexen op de werknemerstabel.

Een andere manier om tabelindexen te bekijken, is door naar 'Tafels' in objectverkenner. Selecteer de tafel en gebruik hem. In de map indexes ziet u alle indexen die relevant zijn voor die specifieke tabel, zoals weergegeven in de onderstaande afbeelding.

Alle indexen in de tabel bekijken

Omdat dit de geclusterde index is, zullen de logische en fysieke volgorde van de index hetzelfde zijn. Dit betekent dat als een record een id van 3 heeft, deze wordt opgeslagen in de derde rij van de tabel. Evenzo, als het vijfde record een ID van 6 heeft, wordt het opgeslagen in het 5thlocatie van de tafel. Om de volgorde van records te begrijpen, moet u het volgende script uitvoeren.

GEBRUIK [test] GO SET IDENTITY_INSERT [dbo]. [Employee] ON INSERT [dbo]. [Employee] ([ID], [Dep_ID], [Name], [email], [city], [address]) VALUES ( 8, 6, N'Humbaerto Acevedo