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:
- 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.
- 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.
- 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.
- 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);