Lezers zoals jij steunen MUO. Wanneer u een aankoop doet via links op onze site, kunnen we een aangesloten commissie verdienen. Lees verder.

Een index helpt SQL Server snel gegevens uit rijen op te halen. Indexen werken als de inhoudsopgave aan het begin van boeken, zodat u snel kunt opzoeken op welke pagina een onderwerp zich bevindt. Zonder indexen moet SQL Server alle rijen in een tabel scannen om een ​​record te vinden.

Er zijn twee soorten indexen in SQL Server: geclusterd en niet-geclusterd. Ontdek het verschil tussen geclusterde en niet-geclusterde indexen en waarom ze belangrijk zijn.

Geclusterde index in SQL Server

In een geclusterde index worden gegevensrijen fysiek opgeslagen op een geordende manier op basis van de sleutelwaarde. Aangezien de index de tabel omvat en rijen slechts in één volgorde kan rangschikken, kunt u slechts één geclusterde index per tabel maken.

Terwijl indexen het ophalen van rijen in een bereik sneller maken, INSERT- en UPDATE-instructies kan traag zijn omdat de query-optimizer de index op volgorde scant totdat de doelindex wordt gevonden.

instagram viewer

Niet-geclusterde index in SQL Server

Een niet-geclusterde index bevat de sleutelwaarden waarvan de invoer een aanwijzer is die een rijzoeker wordt genoemd. Voor geclusterde tabellen (tabellen met een geclusterde index) wijst de aanwijzer naar een sleutel in de geclusterde index die op zijn beurt naar de rij in de tabel verwijst. Voor rijen zonder een geclusterde index wijst de aanwijzer rechtstreeks naar de tabelrij.

Een geclusterde index maken in SQL Server

Wanneer u een tabel maakt met een primaire sleutel, maakt SQL Server automatisch een geclusterde indexsleutel op basis van die primaire sleutel. Als u geen primaire sleutel hebt, kunt u de volgende instructie uitvoeren om een ​​geclusterde indexsleutel te maken.

CREËREN GECLUSTERD INHOUDSOPGAVE <inhoudsopgavenaam>
OP TAFEL <tafel naam>(kolomnaam)

In deze instructie specificeert u de naam van de index, de naam van de tabel waarin deze moet worden gemaakt en de kolomnaam die in de index moet worden gebruikt.

Als u een primaire sleutel toevoegt aan een tabel die al een geclusterde index heeft, maakt SQL Server er een niet-geclusterde index mee.

Als u een geclusterde index wilt maken die geen primaire-sleutelkolom bevat, moet u eerst de primaire-sleutelbeperking verwijderen.

GEBRUIKdatabase naam
WIJZIGENTAFEL tafel naam
DRUPPELBEPERKING pk_naam
GAAN

Als u de beperkingen voor de primaire sleutel verwijdert, wordt ook de geclusterde index verwijderd, zodat u een aangepaste index kunt maken.

Een niet-geclusterde index maken in SQL Server

Gebruik de volgende instructie om een ​​niet-geclusterde index te maken.

CREËRENINHOUDSOPGAVE <inhoudsopgavenaam>
OP TAFEL <tafel naam>(kolomnaam)

U kunt het sleutelwoord NONCLUSTERED ook als volgt gebruiken:

CREËREN [NIET GECLUSTERD] INHOUDSOPGAVE <inhoudsopgavenaam>
OP TAFEL <tafel naam>(kolomnaam)

Deze instructie maakt een niet-geclusterde index in de tabel die u opgeeft en bevat de kolom die u aangeeft.

Als u wilt, kunt u de kolommen in oplopende (ASC) of aflopende (DESC) volgorde sorteren.

CREËREN [NIET GECLUSTERD] INHOUDSOPGAVE <inhoudsopgavenaam>
OP TAFEL <tafel naam>(kolomnaam ASC/DESC)

Welke index moet u kiezen?

Zowel geclusterde als niet-geclusterde indexen verbeteren de zoektijd. Als de meeste van uw query's SELECT-bewerkingen zijn op verschillende kolommen in de tabel, zijn geclusterde indexen sneller. Voor INSERT- of UPDATE-bewerkingen zijn niet-geclusterde indexen echter sneller omdat de query-optimizer de kolom rechtstreeks vanuit de index kan lokaliseren.

Zoals u kunt zien, werken deze indexen het beste voor verschillende SQL-query's. De meeste SQL-databases zullen daarom profiteren van ten minste één geclusterde index en niet-geclusterde indexen voor kolommen die regelmatig worden bijgewerkt.

Het belang van indexen in SQL Server

Geclusterde en niet-geclusterde indexen leiden tot hogere queryprestaties. Wanneer u een query uitvoert, scant de query-optimizer de index voor de opslaglocatie van een rij en haalt vervolgens informatie op van die locatie. Dit is veel sneller dan het scannen van alle rijen in de tabel.

U kunt ook niet-geclusterde indexen gebruiken om impasses bij het opzoeken van bladwijzers op te lossen door een niet-geclusterde index te maken voor kolommen waartoe de query's toegang hadden.