- Indexovanie sa používa na optimalizáciu výkonu databázy minimalizovaním počtu prístupov na disk vyžadovaných pri spracovaní dotazu.
- Index je typ dátovej štruktúry. Používa sa na rýchle vyhľadanie a prístup k údajom v databázovej tabuľke.
Štruktúra indexu:
Indexy je možné vytvárať pomocou niektorých databázových stĺpcov.
- Prvý stĺpec databázy je vyhľadávací kľúč, ktorý obsahuje kópiu primárneho kľúča alebo kandidátskeho kľúča tabuľky. Hodnoty primárneho kľúča sú uložené v zoradenom poradí, aby boli príslušné údaje ľahko dostupné.
- Druhý stĺpec databázy je odkaz na údaje. Obsahuje množinu ukazovateľov, ktoré obsahujú adresu bloku disku, kde je možné nájsť hodnotu konkrétneho kľúča.
Metódy indexovania
Usporiadané indexy
Indexy sú zvyčajne zoradené, aby bolo vyhľadávanie rýchlejšie. Indexy, ktoré sú zoradené, sú známe ako usporiadané indexy.
Príklad : Predpokladajme, že máme tabuľku zamestnancov s tisíckami záznamov a každý z nich má dĺžku 10 bajtov. Ak ich ID začínajú na 1, 2, 3....a tak ďalej a musíme hľadať študenta s ID-543.
- V prípade databázy bez indexu musíme prehľadávať blok disku od spustenia až do dosiahnutia 543. DBMS načíta záznam po prečítaní 543*10=5430 bajtov.
- V prípade indexu budeme hľadať pomocou indexov a DBMS prečíta záznam po prečítaní 542*2= 1084 bajtov, čo je v porovnaní s predchádzajúcim prípadom veľmi menej.
Primárny index
- Ak je index vytvorený na základe primárneho kľúča tabuľky, potom je známy ako primárne indexovanie. Tieto primárne kľúče sú jedinečné pre každý záznam a obsahujú pomer 1:1 medzi záznamami.
- Keďže primárne kľúče sú uložené v zoradenom poradí, výkon operácie vyhľadávania je pomerne efektívny.
- Primárny index možno rozdeliť do dvoch typov: Hustý index a Sparse index.
Hustý index
- Hustý index obsahuje záznam indexu pre každú hodnotu kľúča vyhľadávania v dátovom súbore. Zrýchľuje vyhľadávanie.
- V tomto je počet záznamov v indexovej tabuľke rovnaký ako počet záznamov v hlavnej tabuľke.
- Potrebuje viac miesta na uloženie samotného indexového záznamu. Indexové záznamy majú vyhľadávací kľúč a ukazovateľ na skutočný záznam na disku.
Riedky index
- V dátovom súbore sa indexový záznam zobrazí len pre niekoľko položiek. Každá položka ukazuje na blok.
- V tomto, namiesto toho, aby ukazoval na každý záznam v hlavnej tabuľke, index ukazuje na záznamy v hlavnej tabuľke v medzere.
Index klastrovania
- Klastrovaný index možno definovať ako súbor s usporiadanými údajmi. Niekedy sa index vytvára na neprimárnych kľúčových stĺpcoch, ktoré nemusia byť jedinečné pre každý záznam.
- V tomto prípade, aby sme záznam rýchlejšie identifikovali, zoskupíme dva alebo viac stĺpcov, aby sme získali jedinečnú hodnotu a vytvorili z nich index. Táto metóda sa nazýva index klastrovania.
- Záznamy, ktoré majú podobné charakteristiky, sú zoskupené a pre tieto skupiny sú vytvorené indexy.
Príklad : predpokladajme, že spoločnosť má niekoľko zamestnancov v každom oddelení. Predpokladajme, že používame index klastrovania, kde sa všetci zamestnanci, ktorí patria k rovnakému ID_odboru, považujú v rámci jedného klastra a ukazovatele indexu ukazujú na klaster ako celok. Tu Dept_Id je nejedinečný kľúč.
Predchádzajúca schéma je trochu mätúca, pretože jeden blok disku je zdieľaný záznamami, ktoré patria do iného klastra. Ak použijeme samostatný diskový blok pre samostatné klastre, potom sa to nazýva lepšia technika.
Sekundárny index
Pri riedkom indexovaní s rastúcou veľkosťou tabuľky rastie aj veľkosť mapovania. Tieto mapovania sa zvyčajne uchovávajú v primárnej pamäti, takže načítanie adresy by malo byť rýchlejšie. Potom sekundárna pamäť vyhľadá aktuálne dáta na základe adresy získanej z mapovania. Ak sa veľkosť mapovania zväčší, samotné načítanie adresy sa spomalí. V tomto prípade nebude riedky index efektívny. Na prekonanie tohto problému sa zavádza sekundárne indexovanie.
V sekundárnom indexovaní sa na zmenšenie veľkosti mapovania zavádza ďalšia úroveň indexovania. Pri tejto metóde sa na začiatku vyberie veľký rozsah pre stĺpce, takže veľkosť mapovania prvej úrovne bude malá. Potom sa každý rozsah ďalej rozdelí na menšie rozsahy. Mapovanie prvej úrovne je uložené v primárnej pamäti, takže načítanie adresy je rýchlejšie. Mapovanie druhej úrovne a aktuálne dáta sú uložené v sekundárnej pamäti (pevnom disku).
Napríklad:
- Ak chcete nájsť záznam hodu 111 v diagrame, potom vyhľadá najvyššiu položku, ktorá je menšia alebo rovná 111 v indexe prvej úrovne. Na tejto úrovni dostane 100.
- Potom na druhej úrovni indexu opäť urobí maximum (111)<= 111 and gets 110. now using the address 110, it goes to data block starts searching each record till 111. < li>
- Takto sa pri tejto metóde vykonáva vyhľadávanie. Vkladanie, aktualizácia alebo mazanie sa tiež vykonáva rovnakým spôsobom. =>