Sobes.tech
Middle

Jak indeks optymalizuje wykonanie zapytania?

sobes.tech AI

Odpowiedź od AI

Indeks to struktura danych (zwykle drzewo B), która przechowuje małą część danych tabeli i odwołania do odpowiadających wierszy w głównej tabeli.

Proces optymalizacji:

  1. Szybkie wyszukiwanie: Zamiast pełnego skanowania tabeli (full table scan), system zarządzania bazą danych (DBMS) przeszukuje indeks. Indeks jest posortowany i zoptymalizowany do szybkiego wyszukiwania w określonych kolumnach.
  2. Zmniejszenie ilości odczytywanych danych: Indeks zawiera tylko indeksowane kolumny i wskaźniki, co znacznie zmniejsza ilość danych do odczytu z dysku w porównaniu do odczytu całego wiersza lub strony danych.
  3. Brak sortowania: Indeks jest już posortowany według indeksowanych kolumn. To eliminuje konieczność wykonywania kosztownej operacji sortowania zbiorów danych, jeśli zapytanie wymaga posortowanego wyniku.
  4. Optymalizacja operacji JOIN: Przy łączeniu tabel (JOIN) po indeksowanych kolumnach, DBMS może użyć indeksu do szybkiego odnalezienia odpowiadających wierszy w innej tabeli, zamiast wykonywania zagnieżdżonych pętli po całej tabeli.

Przykład:

Bez indeksu na kolumnie LastName dla zapytania SELECT * FROM Users WHERE LastName = 'Ivanov', DBMS musiałoby odczytać każdy wiersz w tabeli Users i sprawdzić wartość LastName.

Z indeksem na LastName, DBMS szybko znajduje rekordy, gdzie LastName jest równe 'Ivanov', przeszukując posortowany indeks, a następnie korzysta z wskaźników z indeksu, aby uzyskać pełne dane wierszy z głównej tabeli.

-- Przykład zapytania korzystającego z indeksu na LastName
SELECT UserId, FirstName
FROM Users
WHERE LastName = 'Ivanov';
-- Przykład tworzenia indeksu dla optymalizacji powyższego zapytania
CREATE INDEX IX_Users_LastName ON Users (LastName);