Oracle Create Index

Oracle Create Index

I Oracle -databaser refererer en indeks til en datastruktur som fremmer hastigheten på datainnhenting av operasjoner på en databasetabell. Imidlertid kan dette komme med en straff for ekstra skriveoperasjoner og lagringsplass i databasen din.

Et eksempel på hvor en databaseindeks ville være nyttig er i et kundeforholdsstyringssystem.

I et slikt system kan vi ha en databasetabell som lagrer kundeinformasjon. Dette kan omfatte navn, adresse, betalingsmetoder, kontaktinformasjon osv.

Hvis tabellen har mange poster, kanskje millioner av dem, kan det ta lang tid og ressurser å søke etter spesifikk kundeinformasjon fra databasen. Dette er et negativt fenomen, spesielt i databaser der ytelsen er kritisk.

For å omgå dette, kan vi bruke en databaseindeks.

For eksempel kan vi opprette en indeks på kundens navnekolonne som gjør at databasesystemet raskt kan finne og hente en spesifikk kundes informasjon ved hjelp av navnet. Derfor, i stedet for at databasemotoren går gjennom alle radene og kolonnene i tabellen, bruker den bare indeksen for å slå opp kundeinformasjon.

I denne opplæringen lærer du hvordan du bruker CREATE Index -kommandoen i Oracle -databasen for å initialisere en ny indeks.

Oracle Create Index Statement

Følgende viser syntaks for Create Index -setningen i Oracle -databaser:

Opprett indeksindeks_navn
På tabellnavn (kolonne1, kolonne2, ...);

Ovennevnte syntaks oppretter en indeks som heter Index_name på tabellen med navnet tabell_navn ved å bruke de spesifiserte kolonnene (kolonne1, kolonne2 osv.) som nøkkelen for indeksen.

I Oracle er en primærnøkkel en kolonne eller sett med kolonner som identifiserer hver rad i en tabell unikt. Som standard oppretter Oracle automatisk en unik indeks på de primære nøkkelkolonnene i en tabell for å håndheve den unike begrensningen og forbedre ytelsen til primære nøkkeloppslag.

I noen tilfeller kan det hende du må opprette en ny indeks for en bestemt tabell manuelt.

La oss se på noen eksempler på hvordan vi kan oppnå dette.

Oracle Create Index Eksempel

Anta at vi har en tabell som inneholder ansattes informasjon som vist i utdataene nedenfor:

Velg First_Name, Last_name, Lønn, Hire_Date fra ansatte;

Oracle Create Index for en enkelt kolonne

Anta at vi ønsker å opprette en indeks ved hjelp av Kolonnen First_Name. Vi kan kjøre et spørsmål som vist:

opprette indeks first_name_lookup på ansatte (første_navn);

Dette oppretter indekseretningen oppretter en indeks som heter first_name_lookup på de ansatte -tabellen, ved å bruke kolonnen First_Name som nøkkelen for indeksen. Denne indeksen kan brukes til å forbedre ytelsen til spørsmål som søker etter ansatte ved fornavn.

Når vi har opprettet indeksen, kan vi bruke den til å søke etter en bestemt ansatt som vist:

Velg First_Name, Last_name, Palary, Hire_Date
Fra ansatte
Hvor første_navn = 'William';

Resultat:

Uten First_name_lookup -indeksen, ville databasesystemet måtte skanne hele ansatte -tabellen for å finne alle rader der First_name -kolonnen er lik 'William.Men med indeksen på plass kan databasesystemet raskt slå opp radene i indeksen ved å bruke 'John' -verdien som nøkkelen og deretter hente de forespurte radene fra tabellen, noe som vil være mye raskere.

Du kan se trinnene som brukes når du lager spørringen ved å bruke kommandoen for forklaringsplan som vist:

Forklar plan for valgt første_navn, siste_navn, lønn, Hire_date
Fra ansatte
Hvor første_navn = 'William';

Resulterende spørringsplan:

Eksempel 2 - Oracle Create Index med flere kolonner

Tilsvarende kan vi lage en indeks som består av mer enn en kolonne i en gitt tabell. Anta for eksempel at vi ønsker å opprette en indeks som består av den første_navnet og siste_navn -kolonnen.

Vi kan bruke koden som vist:

opprette indeks multi_lookup på ansatte (første_navn, siste_navn);

Dette oppretter indekseretningen oppretter en indeks som heter multi_lookup på de ansatte tabellen, ved å bruke kolonnene for første_navn og siste_navn som nøkkelen for indeksen.

Når vi er opprettet, kan vi bruke denne indeksen som vist i eksemplet spørring som vist:

Velg First_Name, Last_name, Palary, Hire_Date
Fra ansatte
Hvor first_name = 'william' og last_name = 'smith';

Resulterende verdi:

Og der har du en metode for å få fart på databasespørsmålene dine ved å bruke indekser for å begrense søkeomfanget.

Konklusjon

CREATE INDEX -setningen i Oracle lar oss opprette en indeks på en tabell for å forbedre ytelsen til datainnhentingsoperasjoner. Selv om indekser kan forbedre spørringsytelsen, pådrar de seg også Straffer for lagringsplass, noe som fører til redusert skrivehastighetsoperasjoner, bruk dem bare når det er nødvendig.