Verschil tussen cluster- en niet-clusterindex

Cluster versus niet-clusterindex

Indexen zijn erg belangrijk in elke database. Ze worden gebruikt om de prestaties van het ophalen van gegevens uit tabellen te verbeteren. Ze zijn logisch en fysiek onafhankelijk van de gegevens in de bijbehorende tabellen. Daarom kunnen indexen worden neergezet, opnieuw worden gemaakt en opnieuw worden opgebouwd zonder de gegevens van de basistabellen te beïnvloeden. De Oracle-server kan automatisch zijn indexen behouden zonder tussenkomst van een DBA, wanneer de bijbehorende tabellen worden ingevoegd, bijgewerkt en verwijderd. Er zijn verschillende indextypen. Hier zijn er een paar.

1. B-tree indexen

2. Bitmap-indexen

3. Op functies gebaseerde indexen

4. Indexen van de achterkant

5. B-tree clusterindices

Wat is een niet-clusterindex?

Van de bovenstaande indextypen zijn de volgende niet-geclusterde indexen.

• B-tree index

• Bitmapindex

• Op functie gebaseerde index

• Indexen van de achterkant

B-tree-indexen zijn het meest gebruikte indextype van databases. Als de opdracht CREATE INDEX wordt gegeven in de database, zonder een type op te geven, maakt de Oracle-server een b-tree-index. Wanneer een b-tree-index wordt aangemaakt op een specifieke kolom, slaat de oracle-server de waarden van de kolom op en houdt hij een verwijzing naar de eigenlijke rij van de tabel.

Bitmap-indexen worden gemaakt wanneer de kolomgegevens niet erg selectief zijn. Dat betekent dat de kolomgegevens een lage kardinaliteit hebben. Deze zijn speciaal ontworpen voor data warehouses, en het is niet goed om bitmap-indexen te gebruiken op sterk bijwerkbare of transactionele tabellen.

Functionele indices komen van Oracle 8i. Hier wordt een functie gebruikt in de geïndexeerde kolom. Daarom worden kolomgegevens in een functionele index niet op de normale manier gesorteerd. Het sorteert de waarden van de kolommen na het toepassen van de functie. Deze zijn erg handig wanneer de WHERE-knop van de geselecteerde query een functie gebruikt.

Reverse-key indexen zijn een zeer interessant indextype. Laten we aannemen dat een kolom veel unieke stringgegevens bevat zoals 'cityA', 'cityB', 'cityC' ... enz. Alle waarden hebben een patroon. De eerste vier tekens zijn hetzelfde en de volgende delen zijn gewijzigd. Dus wanneer de REVERSE sleutelindex wordt aangemaakt in deze kolom, zal Oracle de string omkeren en deze in een b-tree index herstellen.

De bovengenoemde indextypen zijn NIET-CLUSTERED-indexen. Dat betekent dat geïndexeerde gegevens buiten de tabel worden opgeslagen en dat een gesorteerde verwijzing naar de tabel wordt bewaard. 

Wat is een geclusterde index?

Geclusterde indexen zijn een speciaal type indexen. Het slaat gegevens op volgens de manier waarop tabelgegevens fysiek worden opgeslagen. Er kunnen dus niet veel geclusterde indexen voor één tabel zijn. Eén tabel kan slechts één geclusterde index bevatten.

Wat is het verschil tussen geclusterde en niet-geclusterde indexen?

1. Tabel kan slechts één geclusterde index bevatten, maar er kunnen maximaal 249 niet-geclusterde indexen in één tabel zijn.

2. Geclusterde index wordt automatisch gemaakt wanneer een primaire sleutel wordt gemaakt, maar een niet-geclusterde index wordt gemaakt wanneer een unieke sleutel wordt gemaakt.

3. De logische volgorde van de geclusterde index komt overeen met de fysieke volgorde van de tabelgegevens, maar in niet-geclusterde indexen komt dit niet.