Sobes.tech
Middle

Kā indekss optimizē vaicājuma izpildi?

sobes.tech AI

Atbilde no AI

Indekss ir datu struktūra (parasti B-koks), kas glabā nelielu daļu no tabulas datiem un saites uz atbilstošajiem rindām galvenajā tabulā.

Optimizācijas process:

  1. Ātra meklēšana: Tā vietā, lai pilnībā skenētu visu tabulu (full table scan), datu pārvaldības sistēma (DBMS) pārbauda indeksu. Indekss ir sakārtots un optimizēts ātrai meklēšanai pēc noteiktiem kolonnām.
  2. Samazināts lasāmo datu apjoms: Indekss satur tikai indeksētās kolonnas un norādes, kas būtiski samazina datu apjomu, kas jālasa no diska, salīdzinot ar visas rindas vai visas lapas lasīšanu.
  3. Saraksta kārtošanas neesamība: Indekss jau ir sakārtots pēc indeksētajām kolonnām. Tas novērš dārgo kārtošanas operāciju, ja pieprasījums prasa kārtotu rezultātu.
  4. JOIN operāciju optimizācija: Apvienojot tabulas (JOIN) pēc indeksētajām kolonnām, DBMS var izmantot indeksu, lai ātri atrastu atbilstošās rindas citā tabulā, nevis veikt visu tabulas iterāciju.

Piemērs:

Bez indeksa pēc kolonnas LastName pieprasījumam SELECT * FROM Users WHERE LastName = 'Иванов', DBMS būtu jāizlasa katra rindas Users tabulā un jāpārbauda LastName vērtība.

Ar indeksu pēc LastName, DBMS ātri atrod ierakstus, kuros LastName ir vienāds ar 'Иванов', pārskatot sakārtoto indeksu, un pēc tam izmanto indeksu norādes, lai iegūtu pilnus rindas datus no galvenās tabulas.

-- Piemērs pieprasījumam, kas izmanto `LastName` indeksu
SELECT UserId, FirstName
FROM Users
WHERE LastName = 'Иванов';
-- Piemērs indeksēšanai, lai optimizētu iepriekš minēto pieprasījumu
CREATE INDEX IX_Users_LastName ON Users (LastName);