Geclusterde versus niet-geclusterde index: belangrijkste verschillen met voorbeeld

Inhoudsopgave:

Anonim

Wat is een index?

Een index is een sleutel die is opgebouwd uit een of meer kolommen in de database en die het ophalen van rijen uit de tabel of weergave versnelt. Deze sleutel helpt een database zoals Oracle, SQL Server, MySQL, enz. Om snel de rij te vinden die is gekoppeld aan sleutelwaarden.

Twee soorten indexen zijn:

  • Geclusterde index
  • Niet-geclusterde index

In deze tutorial leer je:

  • Wat is een index?
  • Wat is een geclusterde index?
  • Wat is een niet-geclusterde index?
  • Kenmerkend voor geclusterde index
  • Kenmerken van niet-geclusterde indexen
  • Een voorbeeld van een geclusterde index
  • Een voorbeeld van een niet-geclusterde index
  • Verschillen tussen geclusterde index en niet-geclusterde index
  • Voordelen van geclusterde index
  • Voordelen van niet-geclusterde index
  • Nadelen van geclusterde index
  • Nadelen van niet-geclusterde index

Wat is een geclusterde index?

Clusterindex is een type index dat de gegevensrijen in de tabel sorteert op hun sleutelwaarden. In de database is er slechts één geclusterde index per tabel.

Een geclusterde index definieert de volgorde waarin gegevens in de tabel worden opgeslagen, die slechts op één manier kunnen worden gesorteerd. Er kan dus slechts één geclusterde index voor elke tabel zijn. In een RDBMS kunt u met de primaire sleutel meestal een geclusterde index maken op basis van die specifieke kolom.

Wat is een niet-geclusterde index?

Een niet-geclusterde index slaat de gegevens op de ene locatie op en indices op een andere locatie. De index bevat verwijzingen naar de locatie van die gegevens. Een enkele tabel kan veel niet-geclusterde indexen hebben, aangezien een index in de niet-geclusterde index op verschillende plaatsen wordt opgeslagen.

Een boek kan bijvoorbeeld meer dan één index hebben, een aan het begin die de inhoud van een boekeenheid weergeeft, terwijl de tweede index de index van termen in alfabetische volgorde weergeeft.

Een niet-clusterende index wordt gedefinieerd in het niet-ordenende veld van de tabel. Dit type indexeringsmethode helpt u de prestaties te verbeteren van query's die sleutels gebruiken die niet als primaire sleutel zijn toegewezen. Met een niet-geclusterde index kunt u een unieke sleutel voor een tabel toevoegen.

BELANGRIJK VERSCHIL

  • Clusterindex is een type index dat de gegevensrijen in de tabel sorteert op hun sleutelwaarden, terwijl de niet-geclusterde index de gegevens op de ene locatie opslaat en indices op een andere locatie.
  • Geclusterde index slaat gegevenspagina's op in de bladknooppunten van de index, terwijl de niet-geclusterde indexmethode nooit gegevenspagina's opslaat in de bladknooppunten van de index.
  • Clusterindex vereist geen extra schijfruimte, terwijl de niet-geclusterde index extra schijfruimte vereist.
  • Clusterindex biedt snellere toegang tot gegevens, aan de andere kant is niet-geclusterde index langzamer.

Kenmerkend voor geclusterde index

  • Standaard en gesorteerde gegevensopslag
  • Gebruik slechts een of meer kolommen voor een index
  • Helpt u om gegevens en index samen op te slaan
  • Fragmentatie
  • Operaties
  • Geclusterde indexscan en indexzoekopdracht
  • Sleutel opzoeken

Kenmerken van niet-geclusterde indexen

  • Sla alleen sleutelwaarden op
  • Pointers naar Heap / Clustered Index-rijen
  • Staat secundaire gegevenstoegang toe
  • Brug naar de gegevens
  • Bewerkingen van index scannen en index zoeken
  • U kunt een niet-geclusterde index maken voor een tabel of weergave
  • Elke indexrij in de niet-geclusterde index slaat de niet-geclusterde sleutelwaarde en een rijlocator op

Een voorbeeld van een geclusterde index

In het onderstaande voorbeeld is SalesOrderDetailID de geclusterde index. Voorbeeldquery om gegevens op te halen

SELECT CarrierTrackingNumber, UnitPriceFROM SalesDataWHERE SalesOrderDetailID = 6

Een voorbeeld van een niet-geclusterde index

In het onderstaande voorbeeld wordt als volgt een niet-geclusterde index gemaakt op OrderQty en ProductID

CREATE INDEX myIndex ONSalesData (ProductID, OrderQty)

De volgende query wordt sneller opgehaald in vergelijking met de geclusterde index.

SELECT Product ID, OrderQtyFROM SalesDataWHERE ProductID = 714

Verschillen tussen geclusterde index en niet-geclusterde index

Parameters Geclusterd Niet geclusterd
Gebruik voor U kunt de records sorteren en de geclusterde index fysiek in het geheugen opslaan volgens de volgorde. Een niet-geclusterde index helpt u bij het creëren van een logische volgorde voor gegevensrijen en gebruikt pointers voor fysieke gegevensbestanden.
Opslagmethode Hiermee kunt u gegevenspagina's opslaan in de bladknooppunten van de index. Deze indexeringsmethode slaat nooit gegevenspagina's op in de bladknooppunten van de index.
Grootte De grootte van de geclusterde index is vrij groot. De grootte van de niet-geclusterde index is klein in vergelijking met de geclusterde index.
Toegang tot gegevens Sneller Langzamer vergeleken met de geclusterde index
Extra schijfruimte Niet verplicht Vereist om de index apart op te slaan
Type sleutel Standaard is de primaire sleutel van de tabel een geclusterde index. Het kan worden gebruikt met een unieke beperking op de tafel die fungeert als een samengestelde sleutel.
Belangrijkste kenmerk Een geclusterde index kan de prestaties van het ophalen van gegevens verbeteren. Het moet worden gemaakt op kolommen die worden gebruikt in joins.

Voordelen van geclusterde index

De voor- / voordelen van de geclusterde index zijn:

  • Geclusterde indexen zijn een ideale optie voor bereik of groeperen met zoekopdrachten van het type max, min, count
  • In dit type index kan een zoekopdracht rechtstreeks naar een specifiek punt in de gegevens gaan, zodat u vanaf daar opeenvolgend kunt blijven lezen.
  • De geclusterde indexmethode maakt gebruik van een locatiemechanisme om een ​​indexitem aan het begin van een bereik te lokaliseren.
  • Het is een effectieve methode voor bereikzoekopdrachten wanneer een bereik van zoeksleutelwaarden wordt gevraagd.
  • Helpt u om paginaoverdrachten te minimaliseren en de cache-hits te maximaliseren.

Voordelen van niet-geclusterde index

Voordelen van het gebruik van een niet-geclusterde index zijn:

  • Een niet-clusterende index helpt u om snel gegevens uit de databasetabel op te halen.
  • Helpt u de overheadkosten van de geclusterde index te vermijden
  • Een tabel kan meerdere niet-geclusterde indexen hebben in RDBMS. Het kan dus worden gebruikt om meer dan één index te maken.

Nadelen van geclusterde index

Hier zijn de nadelen / nadelen van het gebruik van een geclusterde index:

  • Veel inzetstukken in niet-opeenvolgende volgorde
  • Een geclusterde index creëert veel constante paginasplitsingen, waaronder zowel gegevenspagina's als indexpagina's.
  • Extra werk voor SQL voor invoegingen, updates en verwijderingen.
  • Een geclusterde index heeft meer tijd nodig om records bij te werken wanneer de velden in de geclusterde index worden gewijzigd.
  • De bladknooppunten bevatten meestal gegevenspagina's in de geclusterde index.

Nadelen van niet-geclusterde index

Hier zijn de nadelen / nadelen van het gebruik van een niet-geclusterde index:

  • Een niet-geclusterde index helpt u om gegevens in een logische volgorde op te slaan, maar staat niet toe om gegevensrijen fysiek te sorteren.
  • Het opzoekproces op een niet-geclusterde index wordt duur.
  • Elke keer dat de clustersleutel wordt bijgewerkt, is een overeenkomstige update vereist op de niet-geclusterde index terwijl deze de clustersleutel opslaat.