- Indexování se používá k optimalizaci výkonu databáze minimalizací počtu přístupů na disk vyžadovaných při zpracování dotazu.
- Index je typ datové struktury. Slouží k rychlému vyhledání a přístupu k datům v databázové tabulce.
Struktura indexu:
Indexy lze vytvářet pomocí některých databázových sloupců.
- První sloupec databáze je vyhledávací klíč, který obsahuje kopii primárního klíče nebo kandidátského klíče tabulky. Hodnoty primárního klíče jsou uloženy v seřazeném pořadí, takže odpovídající data jsou snadno přístupná.
- Druhý sloupec databáze je datový odkaz. Obsahuje sadu ukazatelů obsahujících adresu bloku disku, kde lze nalézt hodnotu konkrétního klíče.
Metody indexování
Seřazené indexy
Indexy se obvykle třídí, aby bylo vyhledávání rychlejší. Indexy, které jsou seřazeny, jsou známé jako uspořádané indexy.
Příklad : Předpokládejme, že máme tabulku zaměstnanců s tisíci záznamy a každý z nich je dlouhý 10 bajtů. Pokud jejich ID začínají 1, 2, 3....a tak dále a musíme hledat studenta s ID-543.
- V případě databáze bez indexu musíme prohledat blok disku od startu až do dosažení 543. DBMS přečte záznam po přečtení 543*10=5430 bajtů.
- V případě indexu budeme hledat pomocí indexů a DBMS přečte záznam po přečtení 542*2= 1084 bytů, což je velmi méně než v předchozím případě.
Primární index
- Pokud je index vytvořen na základě primárního klíče tabulky, pak se nazývá primární indexování. Tyto primární klíče jsou jedinečné pro každý záznam a obsahují vztah 1:1 mezi záznamy.
- Vzhledem k tomu, že primární klíče jsou uloženy v seřazeném pořadí, je výkon vyhledávací operace poměrně efektivní.
- Primární index lze rozdělit do dvou typů: Hustý index a Sparse index.
Hustý index
- Hustý index obsahuje záznam indexu pro každou hodnotu vyhledávacího klíče v datovém souboru. Díky tomu je vyhledávání rychlejší.
- V tomto je počet záznamů v indexové tabulce stejný jako počet záznamů v hlavní tabulce.
- Potřebuje více místa pro uložení samotného indexového záznamu. Indexové záznamy mají vyhledávací klíč a ukazatel na skutečný záznam na disku.
Řídký index
- V datovém souboru se indexový záznam objeví pouze u několika položek. Každá položka ukazuje na blok.
- V tomto, místo aby ukazoval na každý záznam v hlavní tabulce, index ukazuje na záznamy v hlavní tabulce v mezeře.
Index shlukování
- Klastrovaný index lze definovat jako uspořádaný datový soubor. Někdy je index vytvořen na neprimárních sloupcích klíče, které nemusí být jedinečné pro každý záznam.
- V tomto případě pro rychlejší identifikaci záznamu seskupíme dva nebo více sloupců, abychom získali jedinečnou hodnotu a vytvořili z nich index. Tato metoda se nazývá index shlukování.
- Záznamy, které mají podobné vlastnosti, jsou seskupeny a pro tyto skupiny jsou vytvořeny indexy.
Příklad : předpokládejme, že společnost má několik zaměstnanců v každém oddělení. Předpokládejme, že používáme shlukovací index, kde jsou všichni zaměstnanci, kteří patří ke stejnému Dept_ID, považováni za jeden cluster a ukazatele indexu ukazují na cluster jako celek. Zde Dept_Id je nejedinečný klíč.
Předchozí schéma je trochu matoucí, protože jeden blok disku je sdílen záznamy, které patří do jiného clusteru. Pokud použijeme samostatný diskový blok pro samostatné clustery, pak se tomu říká lepší technika.
Sekundární index
V řídkém indexování, jak roste velikost tabulky, roste i velikost mapování. Tato mapování jsou obvykle uchovávána v primární paměti, takže načítání adresy by mělo být rychlejší. Poté sekundární paměť vyhledá aktuální data na základě adresy získané z mapování. Pokud velikost mapování roste, načítání adresy samotné se zpomalí. V tomto případě nebude řídký index efektivní. K překonání tohoto problému je zavedeno sekundární indexování.
V sekundárním indexování se za účelem zmenšení velikosti mapování zavádí další úroveň indexování. V této metodě je zpočátku vybrán velký rozsah pro sloupce, takže velikost mapování první úrovně se zmenší. Poté je každý rozsah dále rozdělen na menší rozsahy. Mapování první úrovně je uloženo v primární paměti, takže načítání adresy je rychlejší. Mapování druhé úrovně a aktuální data jsou uložena v sekundární paměti (pevném disku).
Například:
- Pokud chcete v diagramu najít záznam hodu 111, prohledá nejvyšší položku, která je menší nebo rovna 111 v indexu první úrovně. Na této úrovni dostane 100.
- Pak na druhé úrovni indexu opět dělá max (111)<= 111 and gets 110. now using the address 110, it goes to data block starts searching each record till 111. < li>
- Takto se v této metodě provádí vyhledávání. Vkládání, aktualizace nebo mazání se také provádí stejným způsobem. =>