Indeksy

Indeks:

  • Opcjonalna struktura
  • Może, ale nie musi przyśpieszyć działanie bazy danych
  • Osobny obiekt - nie ma wpływu na tabelę np. po usunięciu
  • Szybka ścieżka dostępu do pojedynczego wiersza danych
  • Wpłynąc może jedynie na szybkość
  • Wskazuje bezpośrednio na lokalizację wierszy posiadają zindeksowaną wartość
  • Jeden ze sposób na zmniejszenie ilości operacji I/O
  • W przypadku braku indeksów baza danych musi wykonać pelne skanowanie by znaleźc żądana wartość
  • Baza danych automatycznie utrzymuje indeksy po ich utworzeniu
  • Wady
    • Ręczne tworzenie indeksu wymaga dogłębnej znajomości modelu danych i ich dystrybucji
    • Obecnośc indeksów powinna być na bieżąco analizowana, gdyż indeks może w jednej sytuacji przyśpieszyć zapytania, a w innej je zwolnić
    • Indeks zajmuje miejsce na dysku
    • W przypadku zastosowania DML (insert, update, delete) na indeksowanych danych baza danych musi aktualizowac indeks co wpływa na wydajność
  • Od wersji Oracle 19c zaimplementowane jest automatyczne zarządzanie indeksami

Indeksy stosujemy w nastepującycych sytuacjach:

  • Wybrane kolumny sa często odpytywane i zwracają niewielki procent całkowitej liczby wierszy
  • Ograniczenie integralności referencyjnej na indeksowanych kolumnach (indeks pozwala na uniknięcie blokady tabeli, która nastąpiłaby w przypadku aktualizacji np. klucza podstawowego tabeli nadrzędnej)

Klucz - Zestaw kolumn lub wyrazeń, na którym można zbudowac indeks. Klucz główny jest zawsze indeksem, klucz obcy nie. Indeks jest obiektem przechowywanym w bazie, z kolei klucz jest pojęciem logicznym.

Rodzaje indeksów:

  • Kompozytowy (połączony)
    • Złożony z wielu kolumn
    • Kolumny sa umieszczone w kolejności, która ma sens dla zapytań pobierających dane
    • Najczęściej używane kolumny powinny być na pierwszym miejscu w indeksie

    Przykład: Odpytujemy najczęściej kolumny imie, nazwisko i wiek z tabeli dane_osobowe. Wtedy indeks będzie wyglądał następująco:

    CREATE INDEX dane_osobowe_ind ON dane_osobowe (imie, nazwisko, wiek)

  • Unikalne i nieunikalne
    • Unikalne indeksy gwarantują, że żadne dwa diwersze tabeli nie maja duplikatów w kolumnach klucza
    • Nieunikalne dopuszczają wartości nieunikalne

Typy indeksów:

  • Balanse tree index
  • Bitmap index

Atrybuty

  • Kompresja
  • Odwrócony indeks
  • Sortowanie

Usuwanie indeksu

drop index job_dept

Tags: