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.
I denne opplæringen lærer du hvordan du slipper en eksisterende indeks fra en databasetabell ved hjelp av Drop Index -kommandoen.
Oracle Drop Index -kommandoen
Følgende demonstrerer syntaks for drop -indekskommandoen i Oracle -databaser:
Drop index index_name;
Erstatningsindeks_navn med navnet på indeksen du ønsker å slippe.
Hvis indeksen du vil slippe er i et annet skjema, må du spesifisere skjemaavnet i Drop Index -setningen. For eksempel:
Drop Index Schema_name.indeks_navn;
I dette tilfellet må du erstatte skjemanavn med skjemaets navn der indeksen er bosatt.
Oracle Create Sample Index
Eksempeluttalelsen nedenfor oppretter en prøveindeks på de ansattes tabell for illustrasjonsformål.
opprette indeks multi_lookup på ansatte (første_navn, siste_navn);
Denne delen dekker ikke detaljene om å lage indekser i Oracle -databaser. Sjekk vår opplæring på Oracle Create Index -kommandoen for å lære mer.
Når indeksen er opprettet, kan vi fjerne den som vist i delen nedenfor:
Oracle Drop Index
Bruk slippindekseretningen etterfulgt av indeksnavnet for å slippe indeksen ovenfor, som vist:
slipp indeks multi_lookup;
Spørringen over vil fjerne indeksen som heter multi_lookup fra det nåværende skjemaet.
Oracle Drop Index - Betinget
I Oracle vil det å prøve å fjerne en ikke-eksisterende indeks resultere i en feil. Ta eksemplet spørring nedenfor:
slipp indeks multi_lookup;
Siden multi_lookup -indeksen ikke eksisterer, vil spørringen returnere en feil:
[72000] [1418] ORA-01418: Spesifisert indeks eksisterer ikke
I noen databasemotorer kan vi overvinne dette ved å legge til hvis ikke eksisterer klausulen, som forhindrer at uttalelsen returnerer et unntak hvis feilen ikke eksisterer.
Dessverre har noen eldre versjoner av Oracle ikke IF Exists -kommandoen. Vi kan imidlertid implementere tilpasset logikk for å forhindre unntak hvis indeksen ikke eksisterer, som vist:
Erklære indeks_num heltall;
BEGYNNE
Velg Count (*) til indeks_num
Fra User_Indexes
Hvor index_name = 'index_name';
Hvis index_count> 0 da
Utfør umiddelbar 'drop index index_name';
SLUTT OM;
SLUTT;
Denne koden bruker en PL/SQL -blokk for å slippe en indeks hvis den eksisterer. Vi starter med å erklære en variabel kalt index_num for å lagre antall indekser med gitt navn.
Deretter bruker vi en SELECT -setning for å telle antall indekser med det gitte navnet i User_Indexes -tabellen og lagre resultatet i index_num -variabelen.
Vi bruker en IF -blokkering for å sjekke om verdien av indeks_numvariabelen er større enn 0. Hvis det er sant, fjerner vi alle indeksene med det spesifiserte navnet. Ellers klarer vi ikke å kalle den fjerne indekserklæringen som forhindrer unntak.
Konklusjon
Avslutningsvis fjerner slippindekserklæringen en indeks fra en databasetabell i Oracle. Syntaksen for denne uttalelsen er:
Drop index index_name;
For å slippe en indeks i et annet skjema, kan du bruke følgende syntaks:
Drop Index Schema_name.indeks_navn;
Du kan bruke IF Exists Clause i Drop Index -setningen for å forhindre at et unntak blir kastet hvis indeksen ikke eksisterer. For eksempel:
Slipp indeks hvis eksisterer indeks_navn;
Alternativt, som vist i de foregående eksemplene, kan du bruke en PL/SQL -blokk for å sjekke om indeksen eksisterer før du prøver å slippe den.