Middle
Kuidas optimeerib indeks päringu täitmist?
sobes.tech AI
Vastus AI-lt
Indeks on andmestruktuur (tavaliselt B-puu), mis salvestab väikese osa tabeli andmetest ja viited vastavatele ridadele põhitaabelis.
Optimeerimisprotsess:
- Kiire otsing: Selle asemel, et kogu tabelit skannida (full table scan), vaatab andmebaasisüsteem (DBMS) indeksit. Indeks on sorteeritud ja optimeeritud kiireks otsinguks teatud veergude järgi.
- Vähem loetavate andmete maht: Indeks sisaldab ainult indeksitavaid veerge ja viiteid, mis oluliselt vähendab andmete mahtu, mida tuleb lugeda kettalt, võrreldes kogu rea või kogu lehe lugemisega.
- Sorteerimise puudumine: Indeks on juba sorteeritud indeksitavate veergude järgi. See välistab kuluka sorteerimisoperatsiooni vajaduse, kui päring nõuab sorteeritud tulemust.
- JOIN-operatsioonide optimeerimine: Tabelite ühendamisel (JOIN) indeksitavate veergude järgi saab DBMS kasutada indeksit kiireks vastavate ridade leidmiseks teises tabelis, selle asemel, et teha kogu tabeli iteratsiooni.
Näide:
Ilma indeksita veeru LastName puhul päringule SELECT * FROM Users WHERE LastName = 'Иванов', peaks DBMS lugema iga rea tabelis Users ja kontrollima LastName väärtust.
Indeksiga LastName puhul leiab DBMS kiiresti kirjed, kus LastName võrdub 'Иванов', vaadates sorteeritud indeksit, ning kasutab seejärel indeksist viiteid, et saada täielikud rea andmed põhitaabelist.
-- Näide päringust, mis kasutab `LastName` indeksit
SELECT UserId, FirstName
FROM Users
WHERE LastName = 'Иванов';
-- Näide indeksi loomise kohta, et optimeerida eelnevalt mainitud päringut
CREATE INDEX IX_Users_LastName ON Users (LastName);