Oracle Opret indeks

Oracle Opret Indeks



I Oracle-databaser refererer et indeks til en datastruktur, der fremmer hastigheden af ​​datahentningsoperationer på en databasetabel. Dette kan dog komme på grund af ekstra skriveoperationer og lagerplads på din database.

Et eksempel på, hvor et databaseindeks ville være nyttigt, er i et kundeforholdsstyringssystem.







I et sådant system kan vi have en databasetabel, der gemmer kundeoplysninger. Dette kan omfatte navn, adresse, betalingsmetoder, kontaktoplysninger osv.



Hvis tabellen rummer mange poster, måske millioner af dem, kan det tage lang tid og ressourcer at søge efter specifikke kundeoplysninger fra databasen. Dette er et negativt fænomen, især i databaser, hvor ydeevne er kritisk.



For at omgå dette kan vi bruge et databaseindeks.





For eksempel kan vi oprette et indeks på kundens navnekolonne, der gør det muligt for databasesystemet hurtigt at finde og hente en specifik kundes information ved hjælp af navnet. I stedet for at databasemotoren gennemgår alle rækker og kolonner i tabellen, bruger den derfor kun indekset til at slå kundeoplysninger op.

I denne øvelse lærer du, hvordan du bruger CREATE INDEX-kommandoen i Oracle-databasen til at initialisere et nyt indeks.



Oracle Opret indekserklæring

Det følgende viser syntaksen for CREATE INDEX-sætningen i Oracle-databaser:

OPRET INDEKS indeksnavn
ON tabelnavn (kolonne1, kolonne2, ...);

Ovenstående syntaks opretter et indeks med navnet indeksnavn på tabellen med navnet tabelnavn ved at bruge de angivne kolonner (kolonne1, kolonne2 osv.) som nøglen til indekset.

I Oracle er en primær nøgle en kolonne eller et sæt kolonner, der unikt identificerer hver række i en tabel. Som standard opretter Oracle automatisk et unikt indeks på de primære nøglekolonner i en tabel for at håndhæve unikhedsbegrænsningen og forbedre ydeevnen af ​​primærnøgleopslag.

I nogle tilfælde kan det dog være nødvendigt at oprette et nyt indeks for en specifik tabel manuelt.

Lad os se på nogle eksempler på, hvordan vi kan opnå dette.

Oracle Opret indekseksempel

Antag, at vi har en tabel, der indeholder medarbejderoplysninger som vist i outputtet nedenfor:

vælg fornavn, efternavn, løn, ansættelsesdato fra MEDARBEJDERE;

Oracle Opret indeks for en enkelt kolonne

Antag, at vi ønsker at oprette et indeks ved hjælp af kolonnen fornavn. Vi kan køre en forespørgsel som vist:

opret indeks fornavn_opslag på MEDARBEJDERE(FIRST_NAME);

Denne CREATE INDEX-sætning opretter et indeks ved navn fornavn_opslag på tabellen MEDARBEJDERE, ved at bruge kolonnen FIRST_NAME som nøglen til indekset. Dette indeks kan bruges til at forbedre ydeevnen af ​​forespørgsler, der søger efter medarbejdere ved deres fornavn.

Når vi har oprettet indekset, kan vi bruge det til at søge efter en bestemt medarbejder som vist:

VÆLG fornavn, efternavn, løn, ansættelsesdato
FRA medarbejdere
WHERE first_name = 'William';

Resultat:

Uden first_name_lookup-indekset ville databasesystemet skulle scanne hele EMPLOYEES-tabellen for at finde alle rækker, hvor FIRST_NAME-kolonnen er lig med 'William'. Men med indekset på plads, kan databasesystemet hurtigt slå rækkerne op i indeks ved at bruge 'John' værdien som nøglen og derefter hente de ønskede rækker fra tabellen, hvilket vil være meget hurtigere.

Du kan se de trin, der bruges, når du laver forespørgslen ved at bruge kommandoen forklar plan som vist:

forklare plan for SELECT fornavn, efternavn, løn, ansættelsesdato
FRA medarbejdere
WHERE first_name = 'William';

Resulterende forespørgselsplan:

Eksempel 2 – Oracle Opret indeks med flere kolonner

På samme måde kan vi oprette et indeks bestående af mere end én kolonne i en given tabel. Antag for eksempel, at vi vil oprette et indeks bestående af kolonnen fornavn og efternavn.

Vi kan bruge koden som vist:

oprette indeks multi_lookup på MEDARBEJDERE(FIRST_NAME, LAST_NAME);

Denne CREATE INDEX-sætning opretter et indeks med navnet multi_lookup i tabellen MEDARBEJDERE, ved at bruge kolonnerne FIRST_NAME og LAST_NAME som nøglen til indekset.

Når det er oprettet, kan vi bruge dette indeks som vist i eksempelforespørgslen som vist:

VÆLG fornavn, efternavn, løn, ansættelsesdato
FRA medarbejdere
WHERE first_name = 'William' OG last_name = 'Smith';

Resulterende værdi:

Og der har du en metode til at fremskynde dine databaseforespørgsler ved at bruge indekser til at begrænse søgeomfanget.

Konklusion

CREATE INDEX-sætningen i Oracle giver os mulighed for at oprette et indeks på en tabel for at forbedre ydeevnen af ​​datahentningsoperationer. Men selvom indekser kan forbedre forespørgselsydeevnen, pådrager de sig også lagerpladssanktioner, hvilket fører til reducerede skrivehastighedsoperationer, brug dem kun, når det er nødvendigt.