Middle
Hoe optimaliseert een index het uitvoeren van een query?
sobes.tech AI
Antwoord van AI
Index is een datastructuur (meestal een B-boom) die een klein deel van de tabelgegevens opslaat en verwijzingen naar de bijbehorende rijen in de hoofdtafel.
Optimalisatieproces:
- Snelle zoekopdracht: In plaats van een volledige scan van de tabel (full table scan), doorzoekt het databasebeheersysteem (DBMS) de index. De index is gesorteerd en geoptimaliseerd voor snelle zoekopdrachten op bepaalde kolommen.
- Vermindering van de gelezen gegevens: De index bevat alleen de geïndexeerde kolommen en pointers, wat de hoeveelheid gegevens die van de schijf gelezen moet worden aanzienlijk vermindert in vergelijking met het lezen van de hele rij of pagina.
- Geen sortering: De index is al gesorteerd op de geïndexeerde kolommen. Dit voorkomt dat er een kostbare sorteervraag moet worden uitgevoerd als de query gesorteerde resultaten vereist.
- Optimalisatie van JOIN-operaties: Bij het samenvoegen van tabellen (JOIN) op geïndexeerde kolommen, kan het DBMS de index gebruiken om snel de bijbehorende rijen in een andere tabel te vinden, in plaats van geneste lussen over de hele tabel uit te voeren.
Voorbeeld:
Zonder index op de kolom LastName voor de query SELECT * FROM Users WHERE LastName = 'Ivanov', zou het DBMS elke rij in de tabel Users moeten lezen en de waarde van LastName controleren.
Met een index op LastName vindt het DBMS snel de records waar LastName gelijk is aan 'Ivanov', door de gesorteerde index te doorzoeken en vervolgens de pointers uit de index te gebruiken om de volledige gegevens van de rijen uit de hoofdtafel te krijgen.
-- Voorbeeld van een query die profiteert van de index op LastName
SELECT UserId, FirstName
FROM Users
WHERE LastName = 'Ivanov';
-- Voorbeeld van het maken van een index om de bovenstaande query te optimaliseren
CREATE INDEX IX_Users_LastName ON Users (LastName);