sql >> Database >  >> RDS >> Oracle

Oracle-indexen en soorten indexen in orakel met voorbeeld

We zullen in dit bericht Oracle-indexen/typen indexen in orakel bespreken met voorbeeld  . Ik zal doorlichten over alle opties voor het maken van een index in Oracle. Ik zou ook bespreken hoe de indexgrootte in Oracle kan worden gecontroleerd. Ik hoop dat je dit bericht leuk vindt. Ik kijk uit naar  feedback op dit bericht

Wat zijn Oracle-indexen?

  • Net zoals we een index in de leerboeken hebben om ons te helpen het specifieke onderwerp in het boek te vinden, gedraagt ​​de Oracle-index zich op dezelfde manier. We hebben verschillende soorten indexen in orakel.
  • Indexen worden gebruikt om snel de rijen in de orakeltabel te doorzoeken. Als de index niet aanwezig is, moet de selectiequery de hele tabel lezen en de rijen retourneren. Met Index kunnen de rijen snel worden opgehaald
  • We zouden indexen moeten maken wanneer we een klein aantal rijen uit een tabel halen. of om de eerste reeks rijen zo snel mogelijk op te halen uit een zoekopdracht die uiteindelijk een groot aantal rijen zal opleveren. Het hangt ook af van de gegevensdistributie, d.w.z. clusterfactor
  • Indexen zijn logisch en fysiek onafhankelijk van de gegevens in de gekoppelde tabel.
  • Indexen zijn optionele structuren die zijn gekoppeld aan tabellen en clusters. U kunt indexen maken op een of meer kolommen van een tabel om de uitvoering van SQL-instructies op die tabel te versnellen.
  • Indexen zijn het belangrijkste middel om schijf-I/O te verminderen als ze op de juiste manier worden gebruikt.
  • De zoekopdracht beslist aan het begin of index al dan niet wordt gebruikt
  • Het beste van indexen is dat de ophaalprestaties van geïndexeerde gegevens vrijwel constant blijven, zelfs als er nieuwe rijen worden ingevoegd. De aanwezigheid van veel indexen in een tabel vermindert echter de prestaties van updates, verwijderingen en invoegingen, omdat Oracle ook de indexen die aan de tabel zijn gekoppeld, moet bijwerken.
  • Als u eigenaar bent van een tabel, kunt u een index maken of als u een index voor een tabel in een ander schema wilt maken, moet u ofwel het systeemrecht CREATE ELK INDEX-systeem of indexrecht voor die tabel hebben

Logisch type indexen

Het definieert de toepassingskenmerken van de Index

Uniek of niet-uniek Een index kan Uniek of niet-Uniek zijn. Oracle maakt een unieke index voor primaire sleutel en unieke sleutelbeperkingen
Als er al niet-unieke indexen in die kolom aanwezig zijn, wordt er geen nieuwe unieke index voor primaire sleutel in Oracle gemaakt
Composiet De index kan bestaan ​​uit enkele of meerdere kolommen. Samengestelde indexen kunnen het ophalen van gegevens versnellen voor SELECT-instructies waarin de WHERE-component verwijst naar alle of het leidende gedeelte van de kolommen in de samengestelde index.
Op functies gebaseerde indexen De gegevens van de geïndexeerde kolom zijn gebaseerd op een berekening
Applicatiedomeinindexen Deze index wordt gebruikt in speciale toepassingen (Spatial, Text).

Wat is de ROWID Pseudo-kolom

ROWID retourneert het adres van elke rij in de tabel. Oracle wijst een ROWID toe aan elke rij.ROWID bestaat uit het volgende

  • Het gegevensobjectnummer van het object
  • Het gegevensblok in het gegevensbestand waarin de rij zich bevindt
  • De positie van de rij in het datablok (eerste rij is 0)
  • Het gegevensbestand waarin de rij zich bevindt (eerste bestand is 1). Het bestandsnummer is relatief aan de tabelruimte.

Oracle gebruikt ROWID intern om toegang te krijgen tot rijen. Oracle slaat bijvoorbeeld ROWID op in de index en gebruikt het om toegang te krijgen tot de rij in de tabel.

U kunt de ROWID van rijen als volgt weergeven met het SELECT-commando:

selecteer rowid, emp_name van emp;

ROWID EMP_NAME

AAADC576474722aSAAA   John

Oracle levert een pakket genaamd DBMS_ROWID om ROWID te decoderen.

Als een rij eenmaal een ROWID is toegewezen, verandert Oracle de ROWID niet tijdens de levensduur van de rij. Maar het verandert wanneer de tabel opnieuw wordt opgebouwd. Wanneer rijen over de partitie worden verplaatst, of wanneer de tabel kleiner wordt

Soorten indexen in orakel met voorbeeld

Er zijn 6 verschillende soorten indexen in orakel

(1) B-boom

(2) Gecomprimeerde B-Tree

(3)  Bitmap

(4) Functiegebaseerd

(5) Omgekeerde sleutel (RKI)

(6) Index georganiseerde tabel (IOT).

Laten we ze allemaal in detail bekijken en hoe we voor elk van deze typen een index in orakel kunnen maken

B – Boomindex:

  • B-Tree-indexen (gebalanceerde boomstructuur) zijn het meest voorkomende type index.
  • B-Tree-index heeft de ROWID en de indexsleutelwaarde opgeslagen in een boomstructuur.
  • Bij het maken van een index wordt een ROOT-blok gemaakt, vervolgens worden BRANCH-blokken gemaakt en ten slotte LEAF-blokken.
  • Elke tak bevat het gegevensbereik dat zijn bladblokken bevatten, en elke wortel bevat het gegevensbereik dat zijn takken bevatten:
  • B-Tree-indexen zijn het nuttigst voor kolommen die voorkomen in de waar-clausule (SELECT … WHERE EMPNO=1).
  • De Oracle-server houdt de boom in evenwicht door indexblokken te splitsen wanneer nieuwe gegevens in de tabel worden ingevoegd.
  • Telkens wanneer een DML-instructie wordt uitgevoerd op de indextabel, vindt er indexactiviteit plaats, waardoor de index groeit (blad en takken toevoegen).

Voordelen

  • Alle bladblokken van de boom bevinden zich op dezelfde diepte.
  • B-tree-indexen blijven automatisch in balans.
  • Alle blokken van de B-tree zijn gemiddeld voor driekwart vol.
  • B-trees bieden uitstekende ophaalprestaties voor een breed scala aan zoekopdrachten, inclusief zoekopdrachten voor exacte zoekwoorden en bereik.
  • Invoegingen, updates en verwijderingen zijn efficiënt, waarbij de volgorde van de sleutels behouden blijft voor snel ophalen.
  • De prestaties van B-tree zijn goed voor zowel kleine als grote tafels en nemen niet af naarmate de tafel groter wordt.
CREATE  INDEX ON  (,…)TABLESPACE ;ExampleCreate index   scott.exp_idx   op tabel scott.example( Sample name)Tablespace TOOL /pre> 

Wat zijn gecomprimeerde B-tree-indexen

  • Gecomprimeerde B-Tree-indexen zijn gebouwd op grote tabellen, in een datawarehouse-omgeving. In dit type index worden dubbele exemplaren van dezelfde waarde geëlimineerd, waardoor de hoeveelheid opslagruimte die de index nodig heeft, wordt verminderd.
  • In een gecomprimeerde B-Tree-index wordt voor elke sleutelwaarde een lijst met ROWID's bijgehouden
  • Als u het COMPRESS-sleutelwoord specificeert bij het maken van een index (CREATE INDEX ... COMPRESS) wordt een gecomprimeerde B-Tree-index gemaakt.
  • Een gewone B-Tree-index kan opnieuw worden opgebouwd met behulp van het COMPRESS-sleutelwoord om deze te comprimeren.
MAAK  INDEX ON  (,…)PCTFREE TABLESPACE Comprimeer  

Wat zijn bitmapindexen

  • Bitmap-indexen zijn het meest geschikt voor gegevens met een lage verschillende kardinaliteit (in tegenstelling tot B-Tree-indexen).
  • Dit type index maakt een binaire kaart van alle indexwaarden en slaat die kaart op in de indexblokken, dit betekent dat de index minder ruimte nodig heeft dan de B-Tree-index.
  • Elk bit in de bitmap komt overeen met een mogelijke rowid. Als de bit is ingesteld, betekent dit dat de rij met de bijbehorende rowid de sleutelwaarde bevat. Een mapping-functie converteert de bitpositie naar een echte rowid, dus de bitmapindex biedt dezelfde functionaliteit als een gewone index, ook al gebruikt deze intern een andere representatie. Als het aantal verschillende sleutelwaarden klein is, zijn bitmapindexen erg ruimtebesparend
  • Als er bitmap-indexen op tabellen zijn, zullen updates volledige tabelvergrendelingen uitschakelen. De Bitmap-index is dus handig voor grote kolommen met een lage DML-activiteit (infrequente updates) of alleen-lezen tabellen. Dit is de reden waarom bitmapindexen vaak veel worden gebruikt in de datawarehouse-omgeving (DWH).
  • Bitmap-indexstructuur bevat een kaart met bits die de waarde in de kolom aangeven, bijvoorbeeld voor de kolom GESLACHT, het indexblok bevat de start-ROWID, de eind-ROWID en de bitmap:
  • Bitmapindexen zijn erg handig wanneer ze worden gemaakt op kolommen met een lage kardinaliteit, gebruikt met de AND &OR-operator in de queryvoorwaarde:
CREER BITMAP  INDEX ON  (,…)PCTFREE TABLESPACE 

Voorbeeld

CREER BITMAP INDEX OP emp_data(geslacht);SELECT COUNT(*) FROM emp_dataWHERE GENDER=’M”;

Voordelen van bitmapindexen

  • Verkorte reactietijd voor grote groepen vragen
  • Een substantiële vermindering van het ruimtegebruik in vergelijking met andere indexeringstechnieken
  • Dramatische prestatieverbeteringen, zelfs op zeer low-end hardware
  • Zeer efficiënte parallelle DML en ladingen

Functiegebaseerde indexen

Op functies gebaseerde indexen zijn indexen die zijn gemaakt op kolommen waarop een functie gewoonlijk wordt toegepast.

Bij gebruik van een functie op een geïndexeerde kolom wordt de index genegeerd, daarom is een functiegebaseerde index erg handig voor deze bewerkingen.

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

Wat zijn reverse-key indexen

  • Het zijn speciale typen B-Tree-indexen en zijn erg handig wanneer ze worden gemaakt op kolommen die volgnummers bevatten.
  • Bij gebruik van een gewone B-Tree, zal de index uitgroeien tot vele vertakkingen en misschien meerdere niveaus, waardoor de prestaties verslechteren. De RKI lost het probleem op door de bytes van elke kolomsleutel om te keren en de nieuwe gegevens te indexeren.
  • li>
  • Deze methode verdeelt de gegevens gelijkmatig in de index. Het maken van een RKI gebeurt met behulp van het REVERSE-trefwoord:CREATE INDEX … ON … REVERSE;
CREATE INDEX ON  ()TABLESPACE REVERSE;ExampleCREATE INDEX emp_idx i ON emp_table (voornaam, achternaam) REVERSE;

Wat is Index Organised Tables (IOT)

  • Als we B-Tree gebruiken, worden Bitmap- en Reverse-sleutelindexen gebruikt voor tabellen waarin gegevens ongeordend worden opgeslagen (Heap Tables).
  • Deze indexen bevatten de locatie van de ROWID van de vereiste tabelrij, waardoor directe toegang tot rijgegevens mogelijk is
  • Een index-georganiseerde tabel verschilt van een gewone tabel omdat de gegevens voor de tabel in de bijbehorende index worden bewaard. Wijzigingen in de tabelgegevens, zoals het toevoegen van nieuwe rijen, het bijwerken van rijen of het verwijderen van rijen, resulteren in het bijwerken van de index.
  • De index-georganiseerde tabel is als een gewone tabel met een index op een of meer van zijn kolommen, maar in plaats van twee aparte opslag voor de tabel en de B-tree-index te onderhouden, onderhoudt het databasesysteem slechts één B- boomindex die zowel de gecodeerde sleutelwaarde als de bijbehorende kolomwaarden voor de bijbehorende rij bevat. In plaats van de rowid van een rij als het tweede element van het indexitem te hebben, wordt de feitelijke gegevensrij opgeslagen in de B-tree-index. De gegevensrijen zijn gebaseerd op de primaire sleutel voor de tabel en elke B-tree-indexvermelding bevat . Index-georganiseerde tabellen zijn geschikt voor toegang tot gegevens via de primaire sleutel of een andere sleutel die een geldig voorvoegsel is van de primaire sleutel.
  • Er is geen duplicatie van sleutelwaarden omdat alleen niet-sleutelkolomwaarden worden opgeslagen met de sleutel. U kunt secundaire indexen bouwen om efficiënte toegang te bieden aan andere kolommen. Toepassingen manipuleren de index-georganiseerde tabel net als een gewone tabel, met behulp van SQL-instructies. Het databasesysteem voert echter alle bewerkingen uit door de corresponderende B-tree-index te manipuleren.

Kenmerken van de Index georganiseerde tabel

  • Primaire sleutel identificeert op unieke wijze een rij; primaire sleutel moet worden opgegeven
  • Toegang op basis van primaire sleutel
  • Logische rowid in ROWID pseudokolom maakt het bouwen van secundaire indexen mogelijk
  • UNIEKE beperking niet toegestaan, maar triggers zijn toegestaan
  • Kan niet worden opgeslagen in een cluster
  • Kan LOB-kolommen bevatten, maar geen LONG-kolommen
  • Distributie en replicatie niet ondersteund


CREATE TABLE commando:CREATE TABLE …ORGANISATION INDEX TABLESPACE … (specificeer dat dit een IOT is)PCTTHRESHOLD … (specificeer % van blok dat moet worden vastgehouden om rijgegevens op te slaan, geldig 0-50 (standaard 50))INCLUDING … (specificeer welke kolom een ​​rij moet breken wanneer de rijlengte groter is dan PCTTHRESHOLD) OVERFLOW TABLESPACE … (specificeer de tablespace waar het tweede deel van de rij zal worden opgeslagen) MAPPING TABLE; (oorzaak aanmaak van een toewijzingstabel, nodig bij het maken van Bitmap-index op IOT)

De toewijzingstabel wijst de fysieke ROWID's van de index toe aan logische ROWID's in de IOT. IOT gebruikt logische ROWID's om tabeltoegang per index te beheren, omdat fysieke ROWID's worden gewijzigd wanneer gegevens worden toegevoegd aan of verwijderd uit de tabel. Om de IOT van andere indexen te onderscheiden, vraagt ​​u de USER_INDEXES-weergave op met behulp van de pct_direct_access-kolom. Alleen IOT heeft een niet-NULL-waarde voor deze kolom.

Applicatiedomeinindexen

Oracle biedt uitbreidbare indexering om indexen op complexe gegevenstypen zoals documenten, ruimtelijke gegevens, afbeeldingen en videoclips te accommoderen en om gebruik te maken van gespecialiseerde indexeringstechnieken.

Met uitbreidbare indexering kunt u toepassingsspecifieke indexbeheerroutines inkapselen als een indextype schema-object en definieer een domeinindex (een applicatiespecifieke index) op tabelkolommen of attributen van een objecttype. Uitbreidbare indexering zorgt ook voor een efficiënte verwerking van applicatiespecifieke operator v.

De applicatiesoftware, genaamd de cartridg e, regelt de structuur en inhoud van een domeinindex. De Oracle-server werkt samen met de toepassing om de domeinindex te bouwen, te onderhouden en te doorzoeken. De indexstructuur zelf kan in de Oracle-database worden opgeslagen als een index-georganiseerde tabel of extern als een bestand.

Domeinindexen gebruiken

Domeinindexen worden gebouwd met behulp van de indexeringslogica die wordt geleverd door een door de gebruiker gedefinieerd indextype. Een indextype biedt een efficiënt mechanisme om toegang te krijgen tot gegevens die voldoen aan bepaalde operatorpredikaten. Meestal maakt het door de gebruiker gedefinieerde indextype deel uit van een Oracle-optie, zoals de Spatial-optie.

Het SpatialIndextype maakt bijvoorbeeld efficiënt zoeken en ophalen van ruimtelijke gegevens mogelijk die een bepaald selectiekader overlappen.

De cartridge bepaalt de parameters die u kunt opgeven bij het maken en onderhouden van de domeinindex. Op dezelfde manier worden de prestatie- en opslagkenmerken van de domeinindex gepresenteerd in de specifieke cartridgedocumentatie.

Tot nu toe hebben we verschillende soorten indexen in orakel behandeld met een voorbeeld. Laten we nu eens kijken hoe u ze kunt wijzigen/verwijderen/opnieuw maken

Hoe de indexen opnieuw te maken/index opnieuw op te bouwen in orakel

We kunnen de instructie ALTER INDEX … REBUILD gebruiken om een ​​bestaande index te reorganiseren of te comprimeren of om de opslagkenmerken ervan te wijzigen

Het REBUILD-statement gebruikt de bestaande index als basis voor de nieuwe.

ALTER INDEX … REBUILD is meestal sneller dan het laten vallen en opnieuw maken van een index.

Het leest alle indexblokken met behulp van multi-block I/O en verwijdert vervolgens de vertakkingsblokken.

Een ander voordeel van deze aanpak is dat de oude index nog steeds beschikbaar is voor zoekopdrachten terwijl het opnieuw opbouwen wordt uitgevoerd.

Alter index    rebuild;Alter index    rebuild  tablespace ;

Hoe u uitspraken schrijft die het gebruik van indexen vermijden

  • U kunt de NO_INDEX-optimalisatiehint gebruiken om de CBO maximale flexibiliteit te geven en het gebruik van een bepaalde index niet toe te staan.
  • U kunt de hint VOLLEDIG gebruiken om de optimizer te dwingen een volledige tabelscan te kiezen in plaats van een indexscan.
  • U kunt de INDEX-, INDEX_COMBINE- of AND_EQUAL-hints gebruiken om de optimizer te dwingen de ene index of een reeks vermelde indexen te gebruiken in plaats van een andere.

Statistieken verzamelen voor indexen

Indexstatistieken worden verzameld met behulp van de instructie ANALYZE INDEX of dbms_stats.

Beschikbare opties zijn BEREKEN/SCHATTEN STATISTIEKEN of VALIDEREN STRUCTUUR.

Vanaf 10g, wanneer de index wordt gemaakt, worden automatisch rekenstatistieken gedaan

Bij gebruik van de valideringsstructuur vult Oracle de weergave INDEX_STATS met statistieken die betrekking hebben op de geanalyseerde index. De statistieken bevatten het aantal bladrijen &blokken (LF_ROWS, LF_BLKS), aantal takrijen &blokken (BR_ROWS, BR_BLKS), aantal verwijderde bladrijen (DEL_LF_ROWS), gebruikte ruimte (USED_SPACE), aantal verschillende sleutels (DISTINCT_KEYS) , enz. Deze statistieken kunnen worden gebruikt om te bepalen of de  index opnieuw moet worden opgebouwd of niet

Hoe beslist Oracle over het gebruik van index?

Oracle beslist automatisch of de index moet worden gebruikt door de Optimizer-engine.

Oracle beslist of er een index wordt gebruikt of niet, afhankelijk van de zoekopdracht.

Oracle kan begrijpen of het gebruik van een index de prestaties in de gegeven query zal verbeteren. Als Oracle denkt dat het gebruik van een index de prestaties zal verbeteren, zal het de index gebruiken, anders negeert het de index.

Laten we   dit voorbeeld begrijpen

We hebben een tabel emp   die emp_name, salaris,dept_no ,emp_no,date_of_joining bevat en we hebben een index op emp_name

Vraag 1

selecteer * van emp  waarbij emp_name ='John';

De bovenstaande zoekopdracht gebruikt de index terwijl we informatie proberen te krijgen over een medewerker op basis van de naam.

Vraag 2

selecteer * uit werk;

De bovenstaande zoekopdracht gebruikt de index niet omdat we alle rijen in de tabel proberen te vinden en we geen waar-clausule in de zoekopdracht hebben

Vraag 3

selecteer * van emp waarbij dept_no =5;

De bovenstaande query gebruikt de index niet, omdat de where-component niet de kolom selecteert die een index heeft

Vraag 4

selecteer * van emp waar substr(emp_name,1,4) ='XYZW';

De bovenstaande query gebruikt de index niet omdat de where-clausule de functie in de kolom gebruikt en we hebben geen functionele index op emp_name

Hoe de index online maken of opnieuw opbouwen?

Oracle heeft tijdens het creatieproces in oudere versies de tabel vergrendeld waarop de index wordt gemaakt. Hierdoor is de tabel niet beschikbaar voor gegevensmanipulatie tijdens het maken van de index.

Nu, met 8i, introduceerde Oracle online reconstructie van de index waarbij Oracle de tabel waarop de index wordt gebouwd niet vergrendelt.

Online indexering vindt plaats via het trefwoord ONLINE.

CREATE  INDEX ON  (,…)PCTFREE TABLESPACE Online;Alter index  online herbouwen;

Kortom, met een online rebuild vergrendelt Oracle de tabel aan het begin en het einde van het maken van de index. Het maakt transacties tussendoor mogelijk. Het mechanisme is behoorlijk verbeterd met 11g en 12c

Wat zijn de nadelen van de  Indexen

Indexen verhogen de prestaties van een geselecteerde query, ze kunnen ook de prestaties van gegevensmanipulatie verminderen.

Veel indexen op een tafel kunnen INSERTS en DELETES drastisch vertragen

Hoe meer indexen op de tafel, hoe meer tijd het invoegen en verwijderen kost.

Evenzo heeft elke wijziging in een geïndexeerde kolom een ​​wijziging in de index nodig.

We moeten de index dus heel zorgvuldig kiezen en laten vallen die niet in gebruik zijn.

Hoewel de extra ruimte die wordt ingenomen door indexen ook een overweging is, maakt het misschien niet veel uit, aangezien de kosten van gegevensopslag aanzienlijk zijn gedaald.

Wat zijn onbruikbare indexen

Een onbruikbare index wordt door de optimizer genegeerd bij het bepalen van het uitlegplan

Het wordt ook niet onderhouden door DML, d.w.z. update, insert, delete werkt de index bij

Er kunnen verschillende redenen zijn waarom de index onbruikbaar is. U hebt de tabel opnieuw opgebouwd, maar de index niet opnieuw opgebouwd, dan zal de index onbruikbaar zijn. Een andere reden om een ​​index onbruikbaar te maken, is om de prestaties van bulklading te verbeteren. Een andere reden kan zijn dat de optimalisatie elke keer de verkeerde index oppikt, en de tijd is van cruciaal belang, dus u kunt besluiten deze onbruikbaar te maken

Een onbruikbare index of indexpartitie moet opnieuw worden opgebouwd of verwijderd en opnieuw worden gemaakt voordat deze kan worden gebruikt. Het afkappen van een tabel maakt een onbruikbare index geldig.

Vanaf Oracle Database 11g Release 2, wanneer u een bestaande index onbruikbaar maakt, wordt het indexsegment verwijderd.

De functionaliteit van onbruikbare indexen hangt af van de instelling van de initialisatieparameter SKIP_UNUSABLE_INDEXES.

Als SKIP_UNUSABLE_INDEXES TRUE is (de standaard), dan:

DML-statements tegen de tabel gaan door, maar onbruikbare indexen worden niet bijgehouden.

DML-instructies eindigen met een fout als er onbruikbare indexen zijn die worden gebruikt om de UNIQUE-beperking af te dwingen.

Voor niet-gepartitioneerde indexen houdt de optimizer geen rekening met onbruikbare indexen bij het maken van een toegangsplan voor SELECT-instructies. De enige uitzondering is wanneer een index expliciet is gespecificeerd met de INDEX() hint.

Als SKIP_UNUSABLE_INDEXES FALSE is, dan:

Als er onbruikbare indexen of indexpartities aanwezig zijn, worden alle DML-instructies die ervoor zouden zorgen dat die indexen of indexpartities zouden worden bijgewerkt, met een fout beëindigd.

Voor SELECT-instructies, als een onbruikbare index of onbruikbare indexpartitie aanwezig is, maar de optimizer ervoor kiest om deze niet te gebruiken voor het toegangsplan, gaat de instructie verder. Als de optimizer er echter voor kiest om de onbruikbare index of onbruikbare indexpartitie te gebruiken, eindigt de instructie met een fout.

Datawoordenboekweergaven op indexen

DBA_INDEXES ALL_INDEXES USER_INDEXES DBA-weergave beschrijft indexen op alle tabellen in de database. ALL view beschrijft indexen op alle tabellen die toegankelijk zijn voor de gebruiker. USER-weergave is beperkt tot indexen die eigendom zijn van de gebruiker. Sommige kolommen in deze weergaven bevatten statistieken die worden gegenereerd door het DBMS_STATS-pakket of de ANALYZE-instructie.
DBA_IND_COLUMNS ALL_IND_COLUMNS

USER_IND_COLUMNS

Deze weergaven beschrijven de kolommen van indexen op tabellen. Sommige kolommen in deze weergaven bevatten statistieken die worden gegenereerd door het DBMS_STATS-pakket of de ANALYZE-instructie.
DBA_IND_EXPRESSIONS ALL_IND_EXPRESSIONS

USER_IND_EXPRESSIONS

Deze weergaven beschrijven de expressies van functiegebaseerde indexen op tabellen.
DBA_IND_STATISTICS ALL_IND_STATISTICS

USER_IND_STATISTICS

Deze weergaven bevatten optimalisatiestatistieken voor indexen.

hoe indexen op een tabel te vinden

stel paginagrootte 50000 in verifieer uit echo offcol table_name head 'Table Name' format a20col index_name head 'Index Name' format a25col column_name head 'Column Name' format a30break on table_name on index_nameselect     table_name, index_name, column_namefrom all_ind_columnswhere table_name like upper('&Table_name like upper('&Table_name like upper('&Table_name like upper('&Table_name like upper('&Table) ')bestel op table_name, index_name, column_position/

Hoe de indexgrootte te bepalen

Grootte van INDEX selecteer segment_name,sum(bytes)/1024/1024/1024 als "SIZE in GB" uit user_segments waarbij segment_name='INDEX_NAME' groepeert op segment_name;OFselect owner,segment_name,sum(bytes)/1024/1024/1024 als "SIZE in GB" van dba_segments waar owner='SCHEMA_NAME' en segment_name='INDEX_NAME' groeperen op eigenaar,segment_name; Lijst van grootte van alle INDEXES van een GEBRUIKER selecteer segment_name,sum(bytes)/1024/1024/1024 als "SIZE in GB" uit user_segments waar segment_type='INDEX' groepeer op segment_name volgorde op "SIZE in GB" desc;OFselect owner,segment_name,sum(bytes)/1024 /1024/1024 als "SIZE in GB" van dba_segments waar owner='SCHEMA_NAME' en segment_type='INDEX' groeperen op eigenaar,segment_name ordenen op "SIZE in GB" desc;Som van grootten van alle indexen selecteer owner,sum(bytes)/1024/1024/1024 als "SIZE in GB" uit dba_segments waar owner='SCHEMA_NAME' en segment_type='INDEX' groeperen op eigenaar;

De index bepalen  definitie

set long 4000select dbms_metadata.get_ddl('INDEX','',' 

Hoe de indexstatistieken te bepalen

pagina's instellen 250set linesize 100set verifiëren offcol tabelnaam formaat a24 kop 'TABEL NAAM'col index_naam formaat a23 kop 'INDEX NAAM'col u formaat a1 kop 'U'col blevel formaat 0 kop 'BL'col leaf_blocks formaat 999990 kop 'LEAF |BLOCKS'col distinct_keys formaat 9999990 kop 'DISTINCT|KEYS'col avg_leaf_blocks_per_key formaat 9999990 kop 'LEAF|BLKS|/KEY'col avg_data_blocks_per_key formaat 9999990 kop 'DATA|BLKS|/KEY'rembreak op table_name unselect table_name, index_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')ordername, 

 Gerelateerde artikelen

externe tabellen in Oracle:bekijk dit bericht voor informatie over het gebruik van de externe tabellen in Oracle met een voorbeeld, hoe u een externe tabel maakt, hoe u deze gebruikt
Oracle Create-tabel:tabellen zijn de basiseenheid van gegevens opslag in een Oracle Database. we bespreken hoe u de Oracle create table-opdracht gebruikt om een ​​tabel te maken met een externe sleutel /primaire sleutel
oracle create tablespace-instructie:Dit artikel over het creëren van tablespace in Oracle, verschillende bijbehorende kenmerken en verschillende create tablespace-statements
Zoek de indexstatus en toegewezen kolommen voor een tabel
Virtuele index in Oracle:wat is virtuele index in Oracle? Gebruik, beperking, voordeel en hoe te gebruiken om te controleren om plan uit te leggen in Oracle-database, verborgen parameter _USE_NOSEGMENT_INDEXES
Oracle Index-clusterfactor:hoe Oracle Index-clusterfactor wordt berekend en hoe dit van invloed is op het plan voor uitleggen
Oracle-partitie Index:Oracle-partitie-index begrijpen, wat zijn wereldwijde niet-gepartitioneerde indexen?

Aanbevolen cursussen

Hier is de mooie Udemy-cursus voor Oracle SQL
Oracle-Sql-Step-voor-stap:deze cursus behandelt basis-sql, joins, tabellen maken en de structuur wijzigen, weergave maken, Union, Union -alles en nog veel meer . Een geweldige cursus en een must-have cursus voor SQL-starters
De complete Oracle SQL-certificeringscursus :Dit is een goede cursus voor iedereen die Job-klaar wil zijn voor SQL-ontwikkelaarsvaardigheden. Een mooi uitgelegde cursus
Oracle SQL Developer:Essentials, Tips and Tricks :Oracle Sql-ontwikkelaarstool wordt door veel ontwikkelaars gebruikt. Deze cursus geeft ons trucs en lessen om het effectief te gebruiken en een productieve sql-ontwikkelaar te worden
Oracle SQL Performance Tuning Masterclass 2020 :Het afstemmen van prestaties is een van de kritische en meest gezochte vaardigheden. Dit is een goede cursus om erover te leren en te beginnen met het afstemmen van sql-prestaties


  1. MySQL - Hoe tijden optellen?

  2. 3 manieren om het aantal systeemtabellen in een SQL Server-database te tellen

  3. 5 praktische databasetips voor beginners

  4. Oracle leest bestand uit directory met uitzondering