Oracle Create-index

Oracle Create Index



In Oracle-databases verwijst een index naar een gegevensstructuur die de snelheid van het ophalen van gegevens op een databasetabel bevordert. Dit kan echter ten koste gaan van extra schrijfbewerkingen en opslagruimte op uw database.

Een voorbeeld van waar een database-index nuttig zou zijn, is in een klantrelatiebeheersysteem.







In zo'n systeem kunnen we een databasetabel hebben die klantinformatie opslaat. Dit kan de naam, het adres, de betalingsmethoden, contactgegevens, enz.



Als de tabel veel records bevat, misschien wel miljoenen, kan het veel tijd en middelen kosten om naar specifieke klantinformatie in de database te zoeken. Dit is een negatief fenomeen, vooral in databases waar prestaties van cruciaal belang zijn.



Om dit te omzeilen, kunnen we een database-index gebruiken.





We kunnen bijvoorbeeld een index maken op de naamkolom van de klant waarmee het databasesysteem snel de informatie van een specifieke klant kan vinden en ophalen met behulp van de naam. Daarom gebruikt de database-engine in plaats van alle rijen en kolommen in de tabel alleen de index om klantgegevens op te zoeken.

In deze zelfstudie leert u hoe u de opdracht CREATE INDEX in de Oracle-database kunt gebruiken om een ​​nieuwe index te initialiseren.



Oracle Create Index-instructie

Hieronder ziet u de syntaxis van de instructie CREATE INDEX in Oracle-databases:

MAAK INDEX index_naam
AAN tabel_naam (kolom1, kolom2, ...);

De bovenstaande syntaxis maakt een index met de naam index_name op de tabel met de naam table_name met behulp van de opgegeven kolommen (kolom1, kolom2, enz.) als de sleutel voor de index.

In Oracle is een primaire sleutel een kolom of een reeks kolommen die elke rij in een tabel uniek identificeert. Standaard maakt Oracle automatisch een unieke index op de primaire sleutelkolommen van een tabel om de uniciteitsbeperking af te dwingen en de prestaties van primaire sleutelzoekacties te verbeteren.

In sommige gevallen moet u echter handmatig een nieuwe index voor een specifieke tabel maken.

Laten we enkele voorbeelden bekijken van hoe we dit kunnen bereiken.

Oracle Create Index-voorbeeld

Stel dat we een tabel hebben met werknemersinformatie zoals weergegeven in de onderstaande uitvoer:

selecteer voornaam, achternaam, salaris, aanwervingsdatum van WERKNEMERS;

Oracle Create Index voor een enkele kolom

Stel dat we een index willen maken met behulp van de first_name kolom. We kunnen een query uitvoeren zoals weergegeven:

maak index first_name_lookup op EMPLOYEES(FIRST_NAME);

Deze instructie CREATE INDEX maakt een index met de naam first_name_lookup in de tabel EMPLOYEES, waarbij de kolom FIRST_NAME wordt gebruikt als sleutel voor de index. Deze index kan worden gebruikt om de prestaties te verbeteren van zoekopdrachten die naar werknemers zoeken op hun voornaam.

Zodra we de index hebben gemaakt, kunnen we deze gebruiken om naar een specifieke werknemer te zoeken, zoals weergegeven:

SELECTEER voornaam, achternaam, salaris, aanstellingsdatum
VAN medewerkers
WHERE voornaam = 'William';

Resultaat:

Zonder de first_name_lookup-index zou het databasesysteem de volledige EMPLOYEES-tabel moeten scannen om alle rijen te vinden waar de FIRST_NAME-kolom gelijk is aan 'William'. Met de index kan het databasesysteem echter snel de rijen in de indexeer met behulp van de 'John'-waarde als sleutel en haal vervolgens de gevraagde rijen uit de tabel op, wat veel sneller zal zijn.

U kunt de stappen bekijken die zijn gebruikt bij het maken van de query met behulp van de opdracht explain plan zoals weergegeven:

plan uitleggen voor SELECT voornaam, achternaam, salaris, aanstellingsdatum
VAN medewerkers
WHERE voornaam = 'William';

Resulterend queryplan:

Voorbeeld 2 – Oracle Create Index met meerdere kolommen

Op dezelfde manier kunnen we een index maken die bestaat uit meer dan één kolom in een bepaalde tabel. Stel dat we een index willen maken die bestaat uit de kolommen first_name en last_name.

We kunnen de code gebruiken zoals getoond:

index multi_lookup maken op EMPLOYEES(FIRST_NAME, LAST_NAME);

Deze instructie CREATE INDEX maakt een index met de naam multi_lookup in de tabel EMPLOYEES, waarbij de kolommen FIRST_NAME en LAST_NAME worden gebruikt als de sleutel voor de index.

Eenmaal gemaakt, kunnen we deze index gebruiken zoals weergegeven in de voorbeeldquery zoals weergegeven:

SELECTEER voornaam, achternaam, salaris, aanstellingsdatum
VAN medewerkers
WHERE voornaam = 'William' EN achternaam = 'Smith';

resulterende waarde:

En daar heb je een methode om je databasequery's te versnellen door indexen te gebruiken om het zoekbereik te beperken.

Gevolgtrekking

Met de instructie CREATE INDEX in Oracle kunnen we een index op een tabel maken om de prestaties van bewerkingen voor het ophalen van gegevens te verbeteren. Hoewel indexen de queryprestaties kunnen verbeteren, leiden ze ook tot opslagruimtebeperkingen, wat leidt tot lagere schrijfsnelheid. Gebruik ze alleen wanneer dat nodig is.