Zoeken…


Invoering

Hier zal ik verschillende indexen uitleggen met behulp van een voorbeeld, hoe index de prestaties van zoekopdrachten verhoogt, hoe index de DML-prestaties vermindert, enz

b-tree index

CREATE INDEX ord_customer_ix ON orders (customer_id);

Als we niets vermelden, maakt oracle standaard een index als een b-tree index. Maar we moeten weten wanneer we het moeten gebruiken. B-tree index slaat gegevens op als binaire boomindeling. Zoals we weten, is index een schema-object dat een soort invoer voor elke waarde voor de geïndexeerde kolom opslaat. Dus telkens wanneer er een zoekopdracht in die kolommen plaatsvindt, wordt in de index gezocht naar de exacte locatie van dat record voor snelle toegang. Enkele punten over indexering:

  • Om een vermelding in de index te zoeken, werd een soort binair zoekalgoritme gebruikt.
  • Wanneer datakardinaliteit hoog is, is de b-tree index perfect te gebruiken.
  • Index maakt DML langzaam, omdat er voor elke record één vermelding in de index voor geïndexeerde kolom moet zijn.
  • Dus, als dat niet nodig is, moeten we vermijden om indexen te maken.

Bitmap-index

CREATE BITMAP INDEX 
emp_bitmap_idx
ON index_demo (gender);
  • Bitmap-index wordt gebruikt wanneer de datakardinaliteit laag is.
  • Hier heeft Gender waarde met een lage kardinaliteit. De waarden kunnen mannelijk, vrouwelijk en anderen zijn.
  • Dus als we tijdens het zoeken een binaire boom voor deze 3 waarden maken, zal dit onnodige verplaatsing hebben.
  • In bitmapstructuren wordt een tweedimensionale array gemaakt met één kolom voor elke rij in de tabel die wordt geïndexeerd. Elke kolom vertegenwoordigt een afzonderlijke waarde binnen de bitmapindex. Deze tweedimensionale array vertegenwoordigt elke waarde binnen de index vermenigvuldigd met het aantal rijen in de tabel.
  • Bij het ophalen van rijen decomprimeert Oracle de bitmap in de RAM-gegevensbuffers, zodat deze snel kan worden gescand op overeenkomende waarden. Deze overeenkomende waarden worden aan Oracle geleverd in de vorm van een rij-ID-lijst en deze rij-ID-waarden hebben rechtstreeks toegang tot de vereiste informatie.

Op functie gebaseerde index

CREATE INDEX first_name_idx ON user_data (UPPER(first_name));


SELECT *
FROM   user_data
WHERE  UPPER(first_name) = 'JOHN2';
  • Op functie gebaseerde index betekent het maken van een index op basis van een functie.
  • Als bij zoeken (waar clausule) vaak een functie wordt gebruikt, is het beter om een index op basis van die functie te maken.
  • Hier wordt in het voorbeeld de functie Upper () gebruikt. Het is dus beter om een index te maken met de bovenste functie.


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow