Sök…


Introduktion

Här kommer jag att förklara olika index med hjälp av exempel, hur index ökar frågeställningen, hur index minskar DML-prestanda osv

b-trädindex

CREATE INDEX ord_customer_ix ON orders (customer_id);

Som standard, om vi inte nämner någonting, skapar oracle ett index som ett b-trädindex. Men vi borde veta när vi ska använda det. B-trädindex lagrar data som binärt trädformat. Som vi vet att index är ett schemaobjekt som lagrar någon sorts post för varje värde för den indexerade kolumnen. Så, när någon sökning sker på dessa kolumner, kontrollerar den i indexet för den exakta platsen för den posten för att komma åt snabbt. Få poäng om indexering:

  • För att söka efter post i indexet användes någon form av binär sökalgoritm.
  • När datakardinaliteten är hög är b- trädindex perfekt att använda.
  • Index gör DML långsamt, för varje post bör det finnas en post i indexet för indexerad kolumn.
  • Så om inte nödvändigt bör vi undvika att skapa index.

Bitmappsindex

CREATE BITMAP INDEX 
emp_bitmap_idx
ON index_demo (gender);
  • Bitmappsindex används när datakardinaliteten är låg.
  • Här har kön värde med låg kardinalitet. Värdena kan vara Manliga, Kvinnliga och andra.
  • Så om vi skapar ett binärt träd för de här tre värdena medan du söker kommer det att ha onödiga traverser.
  • I bitmappsstrukturer skapas en tvådimensionell matris med en kolumn för varje rad i tabellen som indexeras. Varje kolumn representerar ett distinkt värde inom det bitmappade indexet. Denna tvådimensionella matris representerar varje värde i indexet multiplicerat med antalet rader i tabellen.
  • Vid radhämtningstid dekomprimerar Oracle bitmappen i RAM-databuffertarna så att den snabbt kan skannas efter matchande värden. Dessa matchande värden levereras till Oracle i form av en rad-ID-lista, och dessa rad-ID-värden kan komma direkt till den information som krävs.

Funktionsbaserat index

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


SELECT *
FROM   user_data
WHERE  UPPER(first_name) = 'JOHN2';
  • Funktionsbaserat index betyder att skapa index baserat på en funktion.
  • Om du ofta använder någon funktion i sökning (där klausul) är det bättre att skapa index baserat på den funktionen.
  • Här i exemplet för sökning används funktionen övre () . Så det är bättre att skapa index med hjälp av övre funktion.


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow