sql >> Database teknologi >  >> RDS >> Oracle

Oracle Indekser og typer af indekser i Oracle med eksempel

Vi vil diskutere Oracle-indekser/-typer af indekser i Oracle med eksempel  i dette indlæg. Jeg vil gennemgå alle mulighederne for, hvordan man opretter indeks i Oracle. Jeg vil også diskutere, hvordan man kontrollerer indeksstørrelse i Oracle. Jeg håber du vil kunne lide dette indlæg. Jeg vil se frem til  feedback på dette indlæg

Hvad er Oracle-indekser?

  • Ligesom vi har indeks til stede i lærebøgerne for at hjælpe os med at finde det bestemte emne i bogen, opfører Oracle indeks sig på samme måde. Vi har forskellige typer af indekser i oracle.
  • Indekser bruges til hurtigt at søge i rækkerne i orakeltabellen. Hvis indekset ikke er til stede, skal select-forespørgslen læse hele tabellen og returnere rækkerne. Med Index kan rækkerne hurtigt hentes frem
  • Vi bør oprette indekser, når vi henter et lille antal rækker fra en tabel. eller for at hente det første sæt rækker så hurtigt som muligt fra en forespørgsel, der i sidste ende vil returnere et stort antal rækker. Det afhænger også af datafordelingen, dvs. klyngefaktor
  • Indekser er logisk og fysisk uafhængige af dataene i den tilknyttede tabel.
  • Indekser er valgfrie strukturer forbundet med tabeller og klynger. Du kan oprette indekser på en eller flere kolonner i en tabel for at fremskynde udførelse af SQL-sætninger på den tabel.
  • Indekser er det primære middel til at reducere disk I/O, når de bruges korrekt.
  • Forespørgslen bestemmer i begyndelsen, om der skal bruges indeks eller ej
  • Det bedste ved indekser er, at genfindingsydelsen af ​​indekserede data forbliver næsten konstant, selvom nye rækker indsættes. Tilstedeværelsen af ​​mange indekser på en tabel reducerer imidlertid ydeevnen af ​​opdateringer, sletninger og indsættelser, fordi Oracle også skal opdatere de indekser, der er knyttet til tabellen.
  • Hvis du er  ejer af tabel, kan du oprette indeks  eller hvis du vil oprette indeks for tabel i et andet skema, skal du enten have  OPRET ENHVER INDEX-systemprivilegium eller indeksprivilegium på den tabel

Logisk type indekser

Det definerer applikationsegenskaberne for indekset

Unik eller ikke-unik Et indeks kan være Unikt eller ikke Unikt. Oracle opretter et unikt indeks for primær nøgle og unikke nøglebegrænsninger
Hvis ikke-unikke indekser allerede er til stede i den kolonne, vil det ikke oprette et nyt unikt indeks for primær nøgle i Oracle
Sammensat Indekset kan bestå af enkelte eller flere kolonner. Sammensatte indekser kan fremskynde hentning af data for SELECT-sætninger, hvor WHERE-sætningen refererer til alle eller den førende del af kolonnerne i det sammensatte indeks.
Funktionsbaserede indekser Den indekserede kolonnes data er baseret på en beregning
Applikationsdomæneindekser Dette indeks bruges i specielle applikationer (rumlig, tekst).

Hvad er ROWID Pseudo-kolonne

ROWID returnerer adressen på hver række i tabellen. Oracle tildeler en ROWID til hver række. ROWID består af følgende

  • Objektets dataobjektnummer
  • Datablokken i datafilen, som rækken ligger i
  • Rækkens position i datablokken (første række er 0)
  • Datafilen, som rækken ligger i (første fil er 1). Filnummeret er i forhold til tablespacet.

Oracle bruger ROWID internt for at få adgang til rækker. Oracle gemmer f.eks. ROWID i indekset og bruger det til at få adgang til rækken i tabellen.

Du kan få vist ROWID af rækker ved at bruge SELECT-kommandoen som følger:

vælg rowid, emp_name fra emp;

ROWID EMP_NAME

AAADC576474722aSAAA   John

Oracle leverer en pakke kaldet DBMS_ROWID til at afkode ROWID.

Når en række først er tildelt en ROWID, ændrer Oracle ikke ROWID i løbet af rækkens levetid. Men det ændrer sig, når tabellen genopbygges, når rækker flyttes hen over partitionen, eller når tabellen krymper

Typer af indekser i Oracle med eksempel

Der er 6 forskellige typer indekser i oracle

(1) B-træ

(2) Komprimeret B-træ

(3)  Bitmap

(4) Funktionsbaseret

(5) Reverse Key (RKI)

(6) Indeks organiseret tabel (IOT).

Lad os finde ud af hver af dem i detaljer, og hvordan man opretter et indeks i oracle for hver af disse typer

B – Træindeks:

  • B-Tree Indexes (balanceret træ) er den mest almindelige type indeks.
  • B-Tree-indekset lagrede ROWID og indeksnøgleværdien i en træstruktur.
  • Når der oprettes et indeks, oprettes en ROOT-blok, derefter oprettes BRANCH-blokke og til sidst LEAF-blokke.
  • Hver gren rummer det dataområde, dens bladblokke rummer, og hver rod indeholder det dataområde, dens grene indeholder:
  • B-Tree-indekser er mest nyttige på kolonner, der vises i where-sætningen (SELECT … WHERE EMPNO=1).
  • Oracle-serveren holder træet balanceret ved at opdele indeksblokke, når nye data indsættes i tabellen.
  • Når der udføres en DML-sætning på indeksets tabel, forekommer indeksaktivitet, hvilket får indekset til at vokse (tilføj blade og grene).

Fordele

  • Alle bladblokke i træet er i samme dybde.
  • B-træindekser forbliver automatisk afbalanceret.
  • Alle blokke i B-træet er i gennemsnit tre fjerdedele fulde.
  • B-træer giver fremragende genfindingsydeevne for en lang række forespørgsler, herunder eksakt match og rækkeviddesøgninger.
  • Indsættelser, opdateringer og sletninger er effektive og opretholder nøglerækkefølgen for hurtig hentning.
  • B-tree ydeevne er god til både små og store borde og forringes ikke, efterhånden som et bords størrelse vokser.
OPRET   INDEKS  (,...)TABELPLADS ;EksempelOpret indeks   scott.exp_idx   på tabel scott.eksempel(T navn) 

Hvad er komprimerede B-træindekser

  • Komprimerede B-Tree-indekser er bygget på store tabeller i et datavarehusmiljø. I denne type indeks elimineres duplikerede forekomster af samme værdi, hvilket reducerer mængden af ​​lagerplads, som indekset kræver.
  • I et komprimeret B-Tree-indeks opbevares en liste over ROWID'er for hver nøgleværdi
  • Hvis du angiver nøgleordet COMPRESS, når du opretter et indeks (CREATE INDEX … COMPRESS), oprettes et komprimeret B-Tree-indeks.
  • Et almindeligt B-Tree-indeks kan genopbygges ved hjælp af nøgleordet COMPRESS for at komprimere det.
OPRET   INDEKS  (,...)PCTFREE TABELPLADS Komprimer  

Hvad er bitmapindekser

  • Bitmap-indekser er mest passende på data med lav, distinkte kardinalitet (i modsætning til B-Tree-indekser).
  • Denne type indeks opretter et binært kort over alle indeksværdier og gemmer kortet i indeksblokkene, hvilket betyder, at indekset vil kræve mindre plads end B-Tree indekset.
  • Hver bit i bitmap'et svarer til en mulig række. Hvis bit er sat, betyder det, at rækken med den tilsvarende række indeholder nøgleværdien. En kortlægningsfunktion konverterer bitpositionen til en faktisk række, så bitmapindekset giver den samme funktionalitet som et almindeligt indeks, selvom det bruger en anden repræsentation internt. Hvis antallet af forskellige nøgleværdier er lille, så er bitmap-indekser meget pladseffektive
  • Når der er bitmap-indekser på tabeller, vil opdateringer fjerne fulde tabellåse. Så Bitmap-indeks er nyttigt på store kolonner med lav-DML (inhyppige opdateringer) aktivitet eller skrivebeskyttede tabeller. Dette er grunden til, at du ofte oplever, at bitmap-indekser bruges i vid udstrækning i datavarehusmiljøet (DWH).
  • Bitmap-indeksstrukturen indeholder et kort over bits, der angiver værdien i kolonnen, for eksempel for KØN-kolonnen, vil indeksblokken indeholde start-ROWID, slut-ROWID og bitmap:
  • Bitmapindekser er meget nyttige, når de oprettes på kolonner med lav kardinalitet, brugt med AND &OR-operatoren i forespørgselstilstanden:
OPRET BITMAP  INDEKS  (,...)PCTGRATIS TABELPLADS 

Eksempel

OPRET BITMAP-INDEKS PÅ emp_data(køn);VÆLG ANTAL(*) FRA emp_dataWHERE GENDER=’M”;

Fordele ved bitmapindekser

  • Reduceret svartid for store grupper af forespørgsler
  • En væsentlig reduktion af pladsforbruget sammenlignet med andre indekseringsteknikker
  • Dramatiske ydelsesforbedringer, selv på meget lav hardware
  • Meget effektiv parallel DML og belastninger

Funktionsbaserede indekser

Funktionsbaserede indekser er indekser oprettet på kolonner, som en funktion normalt anvendes på.

Når du bruger en funktion på en indekseret kolonne, ignoreres indekset, derfor er et funktionsbaseret indeks meget nyttigt til disse operationer.

CREATE INDEX ON  [ Function(,;EksempelCREATE INDEX EMP_IDX on EMP(UPPER(ENAME));SELECT *FROM EmpWHERE UPPER(Ename) like 'JOHN';

Hvad er Reverse-Key Indexes

  • De  er specielle typer af B-Tree-indekser og er meget nyttige, når de oprettes på kolonner, der indeholder fortløbende numre.
  • Når du bruger et almindeligt B-træ, vil indekset vokse til at have mange forgreninger og måske flere niveauer, hvilket forårsager ydeevneforringelse, RKI'en løser problemet ved at vende bytene for hver kolonnenøgle og indeksere de nye data.
  • Denne metode fordeler dataene jævnt i indekset. Oprettelse af en RKI udføres ved hjælp af REVERSE nøgleordet:CREATE INDEX … ON … REVERSE;
CREATE INDEX ON  ()TABLESPACE REVERSE;EksempelCREATE INDEX emp_idx i ON emp_table (fornavn,efternavn) REVERSE;

Hvad er Index Organized Tables (IOT)

  • Når vi bruger B-Tree, bruges Bitmap- og Reverse-nøgleindekser til tabeller, der gemmer data på en uordnet måde (Heap Tables).
  • Disse indekser indeholder placeringen af ​​ROWID'en for den påkrævede tabelrække, hvilket giver direkte adgang til rækkedata
  • En indeksorganiseret tabel adskiller sig fra en almindelig tabel, fordi dataene for tabellen opbevares i dets tilknyttede indeks. Ændringer i tabeldataene, såsom tilføjelse af nye rækker, opdatering af rækker eller sletning af rækker, resulterer i opdatering af indekset.
  • Den indeksorganiserede tabel er som en almindelig tabel med et indeks på en eller flere af dens kolonner, men i stedet for at opretholde to separate lager for tabellen og B-træindekset, vedligeholder databasesystemet kun en enkelt B- træindeks, som indeholder både den kodede nøgleværdi og de tilhørende kolonneværdier for den tilsvarende række. I stedet for at have en rækkes række som det andet element i indeksindgangen, gemmes den faktiske datarække i B-træindekset. Datarækkerne er bygget på den primære nøgle til tabellen, og hver B-træindeksindgang indeholder . Indeksorganiserede tabeller er velegnede til at få adgang til data med den primære nøgle eller enhver nøgle, der er et gyldigt præfiks for den primære nøgle.
  • Der er ingen duplikering af nøgleværdier, fordi kun ikke-nøglekolonneværdier er gemt med nøglen. Du kan bygge sekundære indekser for at give effektiv adgang til andre kolonner. Applikationer manipulerer den indeksorganiserede tabel ligesom en almindelig tabel ved hjælp af SQL-sætninger. Dog udfører databasesystemet alle operationer ved at manipulere det tilsvarende B-træindeks.

Funktioner i Indeks organiseret tabel

  • Primær nøgle identificerer entydigt en række; primær nøgle skal angives
  • Primær nøglebaseret adgang
  • Logisk rækkevidde i ROWID-pseudokolonne tillader opbygning af sekundære indekser
  • UNIQUE begrænsning er ikke tilladt, men udløsere er tilladt
  • Kan ikke gemmes i en klynge
  • Kan indeholde LOB-kolonner, men ikke LONG-kolonner
  • Distribution og replikering understøttes ikke


CREATE TABLE kommando:CREATE TABLE …ORGANISATION INDEX TABLESPACE … (angiv dette er en IOT)PCTTHRESHOLD … (angiv % af blok, der skal opbevares for at gemme rækkedata, gyldig 0-50 (standard 50)) HERUNDER … (specificer hvilken kolonne der skal brydes en række, når rækkelængden overstiger PCTTHRESHOLD) OVERFLOW TABLESPACE … (angiv det tablespace, hvor den anden del af rækken vil blive gemt) MAPPING TABLE; (forårsage oprettelse af en kortlægningstabel, nødvendig ved oprettelse af Bitmap-indeks på IOT)

Kortlægningstabellen kortlægger indeksets fysiske ROWID'er til logiske ROWID'er i IOT. IOT bruger logiske ROWID'er til at administrere tabeladgang efter indeks, fordi fysiske ROWID'er ændres, når data føjes til eller fjernes fra tabellen. For at skelne IOT fra andre indekser skal du forespørge i USER_INDEXES-visningen ved hjælp af kolonnen pct_direct_access. Kun IOT vil have en ikke-NULL værdi for denne kolonne.

Applikationsdomæneindekser

Oracle tilbyder udvidelig indeksering til at rumme indekser på komplekse datatyper såsom dokumenter, geografiske data, billeder og videoklip og at gøre brug af specialiserede indekseringsteknikker.

Med udvidelig indeksering kan du indkapsle applikationsspecifikke indeksstyringsrutiner som en indekstype skemaobjekt og definere et domæneindeks (et applikationsspecifikt indeks) på tabelkolonner eller attributter for en objekttype. Udvidelig indeksering giver også effektiv behandling af applikationsspecifik operatør s.

Applikationssoftwaren, kaldet kassetten e, styrer strukturen og indholdet af et domæneindeks. Oracle-serveren interagerer med applikationen for at bygge, vedligeholde og søge i domæneindekset. Selve indeksstrukturen kan gemmes i Oracle-databasen som en indeksorganiseret tabel eller eksternt som en fil.

Brug af domæneindekser

Domæneindekser er bygget ved hjælp af indekseringslogikken leveret af en brugerdefineret indekstype. En indekstype giver en effektiv mekanisme til at få adgang til data, der opfylder visse operatørprædikater. Typisk er den brugerdefinerede indekstype en del af en Oracle-indstilling, ligesom Spatial-indstillingen.

For eksempel tillader SpatialIndextype effektiv søgning og genfinding af geografiske data, der overlapper en given afgrænsningsramme.

Patronen bestemmer de parametre, du kan angive ved oprettelse og vedligeholdelse af domæneindekset. På samme måde præsenteres domæneindeksets ydeevne og lagringsegenskaber i den specifikke patrondokumentation.

Indtil videre har vi dækket forskellige typer af indekser i Oracle med et eksempel. Lad os nu tjekke, hvordan man ændrer/slipper/genskaber dem

Sådan genskabes indekserne/genopbygge indekset i Oracle

Vi kan bruge ALTER INDEX … REBUILD-sætningen til at omorganisere eller komprimere et eksisterende indeks eller til at ændre dets lagerkarakteristika

REBUILD-sætningen bruger det eksisterende indeks som grundlag for det nye.

ÆNDRING AF INDEKS … GENOPBYGNING er normalt hurtigere end at droppe og genskabe et indeks.

Den læser alle indeksblokkene ved hjælp af multi-blok I/O og kasserer derefter grenblokkene.

En yderligere fordel ved denne tilgang er, at det gamle indeks stadig er tilgængeligt for forespørgsler, mens genopbygningen er i gang.

Alter index    rebuild;Alter index    rebuild  tablespace ;

Sådan skriver man udsagn, der undgår at bruge indekser

  • Du kan bruge NO_INDEX-optimeringstip til at give CBO'en maksimal fleksibilitet, mens du ikke tillader brugen af ​​et bestemt indeks.
  • Du kan bruge det FULDSTÆNDIGE tip til at tvinge optimeringsværktøjet til at vælge en fuld tabelscanning i stedet for en indeksscanning.
  • Du kan bruge INDEX-, INDEX_COMBINE- eller AND_EQUAL-tipsene til at tvinge optimeringsværktøjet til at bruge ét indeks eller et sæt listede indekser i stedet for et andet.

Sådan indsamler du statistik for indekser

Indeksstatistikker indsamles ved hjælp af ANALYSE INDEX eller dbms_stats-sætningen.

Tilgængelige muligheder er COMPUTE/ESTIMATE STATISTICS eller VALIDATE STRUCTURE.

Fra 10g og fremefter, når indekset er oprettet, beregnes statistik automatisk

Når du bruger valideringsstrukturen, udfylder Oracle INDEX_STATS-visningen med statistik relateret til det analyserede indeks. Statistikken indeholder antallet af bladrækker &-blokke (LF_ROWS, LF_BLKS), antal grenrækker &-blokke (BR_ROWS, BR_BLKS), antal slettede bladrækker (DEL_LF_ROWS), brugt plads (USED_SPACE), antal distinkte nøgler (DISTINCT_KEYS) osv. Disse statistikker kan bruges til at bestemme, om indekset skal genopbygges eller ej

Hvordan beslutter Oracle sig om brugen af ​​indeks?

Oracle beslutter automatisk, om indekset skal bruges af Optimizer-motoren.

Oracle beslutter, om der skal bruges et indeks eller ej, afhængigt af forespørgslen.

Oracle kan forstå, om brugen af ​​et indeks vil forbedre ydeevnen i den givne forespørgsel. Hvis Oracle mener, at brugen af ​​et indeks vil forbedre ydeevnen, vil det bruge indekset, ellers vil det ignorere indekset.

Lad os  forstå dette eksempel

Vi har en tabel emp   som indeholder emp_name, salary, dept_no ,emp_no,date_of_joining, og vi har et indeks på emp_name

Forespørgsel 1

vælg * fra emp  hvor emp_name ='John';

Ovenstående forespørgsel vil bruge indekset, da vi forsøger at få information om en emp baseret på navnet.

Forespørgsel 2

vælg * fra emp;

Ovenstående forespørgsel vil ikke bruge indekset, da vi forsøger at finde alle rækkerne i tabellen, og vi ikke har hvor-klausulen i forespørgslen

Forespørgsel 3

vælg * fra emp hvor dept_no =5;

Ovenstående forespørgsel vil ikke bruge indekset, da where-sætningen ikke vælger kolonnen som har et indeks

Forespørgsel 4

vælg * fra emp hvor substr(emp_name,1,4) ='XYZW';

Ovenstående forespørgsel vil ikke bruge indekset som where-klausulen bruger funktionen i kolonnen, og vi har ikke et funktionelt indeks på emp_name

Hvordan oprettes eller genopbygges indekset online?

Oracle plejede at låse den tabel, som indekset oprettes på under hele oprettelsesprocessen i ældre versioner. Dette gør tabellen utilgængelig til datamanipulation under oprettelsen af ​​indekset.

Nu med 8i introducerede Oracle online-genopbygning af indekset, hvor Oracle ikke låser den tabel, som indekset bygges på.

Online indeksering leveres gennem søgeordet ONLINE.

OPRET   INDEX ON  (,...)PCTFREE TABLESPACE Online;Alter index  rebuild online;
>

Grundlæggende, med en online-genopbygning låser Oracle bordet ved starten og slutningen af ​​oprettelsen af ​​indekset. Det tillader transaktioner imellem. Mekanismen er blevet ret forbedret med 11g og 12c

Hvad er ulemperne ved  indekserne

Indekser øger ydeevnen af ​​en udvalgt forespørgsel, de kan også reducere ydeevnen af ​​datamanipulation.

Mange indekser på en tabel kan bremse INSERTS og DELETES drastisk

Jo flere indekser på bordet, jo længere tid vil det tage at indsætte og slette.

På samme måde vil hver ændring af en indekseret kolonne kræve en ændring af indekset.

Så vi er nødt til at vælge indekset meget omhyggeligt og droppe dem, der ikke er i brug.

Selvom den ekstra plads, der optages af indekser, også er en overvejelse, betyder det måske ikke meget, da omkostningerne til datalagring er faldet betydeligt.

Hvad er ubrugelige indekser

Et ubrugeligt indeks ignoreres af optimeringsværktøjet ved beslutning om forklaringsplanen

Det vedligeholdes heller ikke af DML, dvs. opdatere, indsætte, slette opdaterer indekset

Der kan være flere årsager til, at indekset er i en ubrugelig tilstand. Du genopbyggede tabellen, men genopbyggede ikke indekset, så vil indekset være i en ubrugelig tilstand. En anden grund til at gøre et indeks ubrugeligt er at forbedre bulk load ydeevne. En anden grund kan være, at optimeringsværktøjet opfanger det forkerte indeks hver gang, og det er vigtigt, at du beslutter dig for at gøre det ubrugeligt

Et ubrugeligt indeks eller indekspartition skal genopbygges eller slettes og genskabes, før det kan bruges. Afkortning af en tabel gør et ubrugeligt indeks gyldigt.

Fra og med Oracle Database 11g Release 2, når du gør et eksisterende indeks ubrugeligt, slettes dets indekssegment.

Funktionaliteten af ​​ubrugelige indekser afhænger af indstillingen af ​​SKIP_UNUSABLE_INDEXES initialiseringsparameteren.

Når SKIP_UNUSABLE_INDEXES er TRUE (standard), så:

DML-sætninger mod tabellen fortsætter, men ubrugelige indekser vedligeholdes ikke.

DML-sætninger afsluttes med en fejl, hvis der er ubrugelige indekser, der bruges til at håndhæve den UNIQUE begrænsning.

For ikke-partitionerede indekser tager optimeringsværktøjet ikke nogen ubrugelige indekser i betragtning, når der oprettes en adgangsplan for SELECT-sætninger. Den eneste undtagelse er, når et indeks er eksplicit angivet med INDEX()-hintet.

Når SKIP_UNUSABLE_INDEXES er FALSK, så:

Hvis der er ubrugelige indekser eller indekspartitioner til stede, afsluttes alle DML-sætninger, der ville forårsage opdatering af disse indekser eller indekspartitioner, med en fejl.

For SELECT-sætninger, hvis et ubrugeligt indeks eller ubrugelig indekspartition er til stede, men optimeringsværktøjet ikke vælger at bruge det til adgangsplanen, fortsætter sætningen. Men hvis optimeringsværktøjet vælger at bruge det ubrugelige indeks eller ubrugelige indekspartition, afsluttes sætningen med en fejl.

Dataordbogsvisninger på  Indekser

DBA_INDEXES ALL_INDEXES USER_INDEXES DBA-visning beskriver indekser på alle tabeller i databasen. ALL-visningen beskriver indekser på alle tabeller, som er tilgængelige for brugeren. USER-visning er begrænset til indekser, der ejes af brugeren. Nogle kolonner i disse visninger indeholder statistik, der er genereret af DBMS_STATS-pakken eller ANALYZE-sætningen.
DBA_IND_COLUMNS ALLE_IND_COLUMNS

USER_IND_COLUMNS

Disse visninger beskriver kolonnerne med indekser på tabeller. Nogle kolonner i disse visninger indeholder statistik, der er genereret af DBMS_STATS-pakken eller ANALYZE-sætningen.
DBA_IND_EXPRESSIONS ALLE_IND_EXPRESSIONS

USER_IND_EXPRESSIONS

Disse visninger beskriver udtryk for funktionsbaserede indekser på tabeller.
DBA_IND_STATISTICS ALL_IND_STATISTICS

USER_IND_STATISTICS

Disse visninger indeholder optimeringsstatistikker for indekser.

hvordan man finder indekser på en tabel

indstil sidestørrelse 50000 verify off echo offcol tabelnavn hoved 'Tabelnavn'-format a20kol. indeksnavn hoved 'Indeksnavn' format a25kol kolonnenavn hoved 'Kolonnenavn' format a30brud på tabelnavn på indeksnavn vælg     tabelnavn, indeks_navn, alle_hvor_kolonne_navn, kolonnenavn_fra' ') rækkefølge efter tabelnavn, indeksnavn, kolonneposition/

Sådan bestemmes indeksstørrelsen

Størrelse på INDEX vælg segment_name,sum(bytes)/1024/1024/1024 som "SIZE in GB" fra user_segments, hvor segment_name='INDEX_NAME' grupperer efter segment_name;ELLER vælg ejer,segment_name,sum(bytes)/1024/1024/1024 som "SIZE in GB" fra dba_segments hvor ejer='SCHEMA_NAME' og segment_name='INDEX_NAME' grupperer efter ejer, segmentnavn; Liste over størrelse på alle INDEXER for en BRUGER vælg segment_name,sum(bytes)/1024/1024/1024 som "SIZE in GB" fra user_segments, hvor segment_type='INDEX' grupperer efter segment_name rækkefølge efter "SIZE in GB" desc;ELLER vælg ejer,segment_name,sum(bytes)/1024 /1024/1024 som "SIZE i GB" fra dba_segments hvor ejer='SCHEMA_NAME' og segment_type='INDEX' grupperer efter ejer, segment_name rækkefølge efter "SIZE i GB" desc;Summen af ​​størrelser af alle indekser vælg ejer,sum(bytes)/1024/1024/1024 som "SIZE i GB" fra dba_segments, hvor ejer='SCHEMA_NAME' og segment_type='INDEX' grupperer efter ejer;

Sådan bestemmer du indekset  definition

indstil lang 4000select dbms_metadata.get_ddl('INDEX','',' 

Sådan bestemmes indeksstatistikken

sæt sider 250sæt linjestørrelse 100sæt verify offcol tabelnavn format a24 overskrift 'TABELNAVN'col index_name format a23 overskrift 'INDEX NAME'col u format a1 overskrift 'U'col blevel format 0 overskrift 'BL'col leaf_blocks format 999990 overskrift 'LEAF |BLOCKS'col distinct_keys format 9999990 heading 'DISTINCT|KEYS'col avg_leaf_blocks_per_key format 9999990 heading 'LEAF|BLKS|/KEY'col avg_data_blocks_per_key format 9999990 heading on 'DATA_name' 'UNIQUE', 'U', null ) u,blevel, leaf_blocks, distinct_keys,avg_leaf_blocks_per_key, avg_data_blocks_per_keyfrom sys.dba_indexeswhere table_owner like upper('&owner') and table_name like upper('&table_name, index_name')order,table_name; /pre> 

 Relaterede artikler

eksterne tabeller i Oracle :Tjek dette indlæg for information om brugen af ​​de eksterne tabeller i Oracle med et eksempel, hvordan man opretter en ekstern tabel, hvordan man bruger den
Oracle Opret tabel :Tabeller er den grundlæggende dataenhed lagring i en Oracle-database. vi dækker, hvordan man bruger Oracle create table-kommando til at oprette en tabel med en fremmednøgle /primær nøgle
oracle create tablespace-sætning:Denne artikel om, hvordan man opretter tablespace i Oracle, forskellige karakteristika forbundet med det og forskellige create tablespace-sætninger
Find indeksstatus og tildelte kolonner til en tabel
Virtuelt indeks i Oracle:Hvad er virtuelt indeks i Oracle? Anvendelser, begrænsninger, fordele og hvordan man bruger til at kontrollere for at forklare planen i Oracle-databasen, skjult parameter _USE_NOSEGMENT_INDEXES
Oracle Index-klyngefaktor:Hvordan Oracle Index-klyngefaktor beregnes, og hvordan det påvirker forklaringsplanen
Oracle-partition Indeks :Forstå Oracle-partitionsindeks, Hvad er globale ikke-partitionerede indekser?, Hvad er lokale præfiksindekser, lokalt indeks uden præfiks

Anbefalede kurser

Her er det fine Udemy-kursus til Oracle SQL
Oracle-Sql-trin-for-trin :Dette kursus dækker grundlæggende sql, joins, oprettelse af tabeller og ændring af strukturen, Create View, Union, Union -alle og meget andet. . Et godt kursus og must-have kursus for SQL starter
The Complete Oracle SQL Certification Course :Dette er et godt kursus for enhver, der ønsker at være jobklar til SQL-udviklerfærdigheder. Et godt forklaret kursus
Oracle SQL Developer:Essentials, Tips and Tricks :Oracle Sql-udviklerværktøj bliver brugt af mange udviklere. Dette kursus giver os tricks og lektioner til, hvordan man effektivt bruger det og bliver en produktiv sql-udvikler
Oracle SQL Performance Tuning Masterclass 2020 :Ydeevnejustering er en af ​​de kritiske og mest søgte færdigheder. Dette er et godt kursus for at lære om det og begynde at lave sql-ydelsesjustering


  1. Hvordan rejser man en undtagelse i en trigger? Er der en måde at gøre dette på?

  2. DATEDIFF() vs DATEDIFF_BIG() i SQL Server:Hvad er forskellen?

  3. Skinner:Ingen forbindelsespulje til ActiveRecord::Base

  4. Svarende til Oracles RowID i MySQL