Oracle Skapa index

Oracle Skapa Index



I Oracle-databaser hänvisar ett index till en datastruktur som ökar hastigheten för datahämtning i en databastabell. Detta kan dock bero på extra skrivoperationer och lagringsutrymme på din databas.

Ett exempel på var ett databasindex skulle vara användbart är i ett kundrelationshanteringssystem.







I ett sådant system kan vi ha en databastabell som lagrar kundinformation. Detta kan inkludera namn, adress, betalningsmetoder, kontaktinformation etc.



Om tabellen innehåller många poster, kanske miljoner av dem, kan det ta lång tid och resurser att söka efter specifik kundinformation från databasen. Detta är ett negativt fenomen, särskilt i databaser där prestanda är avgörande.



För att kringgå detta kan vi använda ett databasindex.





Till exempel kan vi skapa ett index på kundens namnkolumn som gör att databassystemet snabbt kan hitta och hämta en specifik kunds information med hjälp av namnet. Därför, istället för att databasmotorn går igenom alla rader och kolumner i tabellen, använder den bara indexet för att slå upp kundinformation.

I den här handledningen kommer du att lära dig hur du använder kommandot CREATE INDEX i Oracle-databasen för att initiera ett nytt index.



Oracle Skapa indexutlåtande

Följande visar syntaxen för CREATE INDEX-satsen i Oracle-databaser:

SKAPA INDEX index_name
ON tabellnamn (kolumn1, kolumn2, ...);

Ovanstående syntax skapar ett index med namnet index_name i tabellen med namnet tabellnamn med de angivna kolumnerna (kolumn1, kolumn2, etc.) som nyckel för indexet.

I Oracle är en primärnyckel en kolumn eller en uppsättning kolumner som unikt identifierar varje rad i en tabell. Som standard skapar Oracle automatiskt ett unikt index på primärnyckelkolumnerna i en tabell för att upprätthålla unikhetsbegränsningen och förbättra prestandan för primärnyckelsökningar.

Men i vissa fall kan du behöva skapa ett nytt index för en specifik tabell manuellt.

Låt oss titta på några exempel på hur vi kan åstadkomma detta.

Oracle Skapa Index Exempel

Anta att vi har en tabell som innehåller personalinformation som visas i utgången nedan:

välj förnamn, efternamn, lön, anställningsdatum från ANSTÄLLDA;

Oracle Skapa index för en enskild kolumn

Anta att vi vill skapa ett index med hjälp av kolumnen förnamn. Vi kan köra en fråga enligt bilden:

skapa index first_name_lookup på EMPLOYEES(FIRST_NAME);

Denna CREATE INDEX-sats skapar ett index med namnet first_name_lookup i tabellen EMPLOYEES, med kolumnen FIRST_NAME som nyckel för indexet. Detta index kan användas för att förbättra prestandan för frågor som söker efter anställda med deras förnamn.

När vi har skapat indexet kan vi använda det för att söka efter en specifik anställd enligt bilden:

VÄLJ förnamn, efternamn, lön, anställningsdatum
FRÅN anställda
WHERE first_name = 'William';

Resultat:

Utan first_name_lookup-indexet skulle databassystemet behöva skanna hela EMPLOYEES-tabellen för att hitta alla rader där kolumnen FIRST_NAME är lika med 'William'. Men med indexet på plats kan databassystemet snabbt slå upp raderna i index med 'John'-värdet som nyckel och hämta sedan de begärda raderna från tabellen, vilket kommer att vara mycket snabbare.

Du kan se stegen som används när du gör frågan med hjälp av kommandot explain plan som visas:

förklara plan för SELECT förnamn, efternamn, lön, anställningsdatum
FRÅN anställda
WHERE first_name = 'William';

Resulterande frågeplan:

Exempel 2 – Oracle Skapa index med flera kolumner

På samma sätt kan vi skapa ett index som består av mer än en kolumn i en given tabell. Anta till exempel att vi vill skapa ett index som består av kolumnen förnamn och efternamn.

Vi kan använda koden som visas:

skapa index multi_lookup på EMPLOYEES(FIRST_NAME, LAST_NAME);

Den här CREATE INDEX-satsen skapar ett index med namnet multi_lookup i tabellen EMPLOYEES, med kolumnerna FIRST_NAME och LAST_NAME som nyckel för indexet.

När vi väl har skapat det kan vi använda detta index som visas i exempelfrågan som visas:

VÄLJ förnamn, efternamn, lön, anställningsdatum
FRÅN anställda
WHERE first_name = 'William' OCH last_name = 'Smith';

Resultatvärde:

Och där har du en metod för att påskynda dina databasfrågor genom att använda index för att begränsa sökomfånget.

Slutsats

CREATE INDEX-satsen i Oracle tillåter oss att skapa ett index på en tabell för att förbättra prestandan för datahämtning. Men även om index kan förbättra frågeprestanda, medför de också lagringsutrymmespåföljder, vilket leder till minskad skrivhastighet, använd dem endast när det är nödvändigt.