Indexování v DBMS: Co je to, typy indexů s PŘÍKLADY
⚡ Chytré shrnutí
Indexování v databázi je technika datových struktur, která rychle vyhledává záznamy pomocí mapy.ping vyhledávací klíč k adrese disku jeho záznamu. Primární, sekundární, shlukovací, víceúrovňové a B-stromové indexy vyměňují prostor, rychlost a údržbu odlišně.

Co je indexování?
Indexování je technika datových struktur, která umožňuje rychlé načtení záznamů z databázového souboru. Index je malá tabulka, která má pouze dva sloupce. První sloupec obsahuje kopii primárního nebo kandidátského klíče tabulky. Druhý sloupec obsahuje sadu ukazatele uchovávající adresu bloku disku, kde je uložena daná specifická hodnota klíče.
Index:
- Přijímá vyhledávací klíč jako vstup.
- Efektivně vrací kolekci odpovídajících záznamů.
Bez indexu musí databáze prohledat každý řádek, aby mohla odpovědět na dotaz. S indexem se přeskočí přímo na odpovídající blok, a proto má zvolený typ indexu velký vliv na výkon.
Typy indexování v DBMS

Indexování v databázi je definováno na základě jejích atributů indexování. Dva hlavní typy metod indexování jsou:
- Primární indexování
- Sekundární indexování
Primární index v DBMS
Primární index je uspořádaný soubor s pevnou délkou a dvěma poli. První pole je stejné jako primární klíč a druhé pole odkazuje na daný datový blok. V primárním indexu existuje mezi položkami v indexové tabulce vždy vztah jedna k jedné.
Primární index se dále dělí na dva typy:
- Hustý index
- Řídký index
Hustý index
V hustém indexu se pro každou hodnotu klíče vyhledávání v databázi vytvoří záznam. To vám pomůže rychleji vyhledávat, ale vyžaduje to více místa pro ukládání záznamů indexu. V této metodě záznamy obsahují hodnotu klíče vyhledávání a ukazují na skutečný záznam na disku.
Řídký index
Řídký index je indexový záznam, který se zobrazuje pouze pro některé hodnoty v souboru. Řídký index vám pomůže vyřešit problémy s hustým indexováním v DBMSV této technice řada indexových sloupců ukládá stejnou adresu datového bloku a když je třeba načíst data, je tato adresa bloku načtena.
Řídký index ukládá záznamy pouze pro některé hodnoty klíčů pro vyhledávání. Potřebuje méně místa a menší režijní náklady na údržbu pro vkládání a mazání, ale je pomalejší než hustý index pro vyhledávání záznamů.
Níže je uveden příklad řídkého indexu databáze.
Hustý index vs. řídký index
Dvě primární varianty indexu přinášejí opačné kompromisy, které jsou shrnuty níže.
| Vzhled | Hustý index | Řídký index |
|---|---|---|
| Příspěvky | Jeden na klíč vyhledávání | Jeden na blok |
| space | Více | Less |
| Rychlost vyhledávání | Rychlejší | Pomaleji |
| Údržba | Vyšší | Spodní |
Sekundární index v DBMS
Sekundární index v DBMS může být generován polem, které má pro každý záznam jedinečnou hodnotu a mělo by to být kandidátský klíč. Je také známý jako index bez shlukování.
Tato dvouúrovňová technika indexování databáze se používá k redukci mapyping velikost první úrovně. Pro první úroveň je vybrán velký rozsah čísel, takže mapaping velikost zůstává vždy malá.
Příklad sekundárního indexu
Pojďme si vysvětlit sekundární indexování na příkladu indexu databáze. V databázi bankovních účtů jsou data uložena postupně podle acc_no, ale můžete chtít najít všechny účty v konkrétní pobočce banky ABC.
Zde můžete mít sekundární index pro každý vyhledávací klíč. Záznam indexu odkazuje na sektor, který obsahuje ukazatele na všechny záznamy s danou hodnotou vyhledávacího klíče.
Clustering Index v DBMS
V klastrovaném indexu jsou v indexu uloženy samotné záznamy, nikoli ukazatele. Někdy je index vytvořen na sloupcích, které nejsou primárním klíčem, což nemusí být pro každý záznam jedinečné. V takové situaci můžete seskupit dva nebo více sloupců, abyste získali jedinečné hodnoty, a vytvořit index, který se nazývá klastrovaný index. To vám také pomůže rychleji identifikovat záznam.
Příklad: Předpokládejme, že společnost přijala mnoho zaměstnanců do různých oddělení. V tomto případě by měl být vytvořen shlukovací index pro všechny zaměstnance, kteří patří do stejného oddělení.
Jsou považovány za jeden klastr a index ukazuje na klastr jako celek. Zde je Department_no nejedinečný klíč.
Co je to víceúrovňový index?
Víceúrovňové indexování se vytváří, když se primární index nevejde do paměti. U tohoto typu indexování můžete snížit počet přístupů na disk pro dosažení jakéhokoli záznamu. Záznamy jsou uchovávány na disku jako sekvenční soubor a nad tímto souborem se vytvoří řídký index.
Index B-stromu
B-stromový index je nejrozšířenější datová struktura pro stromové indexování v systémech pro správu databází. Jedná se o víceúrovňový formát stromového indexování, který využívá vyvážené… binární vyhledávací stromyVšechny koncové uzly B-stromu obsahují skutečné ukazatele na data.
Navíc jsou všechny koncové uzly propojeny linkovaným seznamem, což umožňuje B-stromu podporovat náhodný i sekvenční přístup.
- Listové uzly musí mít 2 až 4 hodnoty.
- Každá cesta od kořene k listu je většinou stejně dlouhá.
- Nelistové uzly mají kromě kořenového uzlu 3 až 5 podřízených uzlů.
- Každý uzel, který není kořenem ani listem, má mezi n/2 a n potomky.
Kde dominují vyhledávání s přesnou shodou a skenování rozsahu je vzácné, hashování může být rychlejší alternativou k indexu B-stromu.
Výhody indexování
Důležité výhody indexování jsou:
- Pomáhá to snížit celkový počet I/O operací potřebných k načtení dat, takže není nutné přistupovat k řádku přímo z tabulky.
- Nabízí uživatelům rychlejší vyhledávání a načítání dat.
- Může to zmenšit tabulkový prostor, protože není nutné ukládat ROWID do indexu pro každý propojený řádek.
- Data v koncových uzlech jsou již seřazena podle hodnoty klíče.
Nevýhody indexování
Mezi důležité nevýhody indexování patří:
- Pro provedení indexování potřebujete primární klíč v tabulce s jedinečnou hodnotou.
- Nelze vytvořit další index na datech, která jsou již indexově uspořádána stejným způsobem.
- Nemáte povoleno rozdělovat tabulku uspořádanou podle indexu.
- Indexování snižuje výkon v dotazech INSERT, DELETE a UPDATE.





