Dette er faktisk sværere end det ser ud - et typisk moderne DBMS (og MS SQL Server er ingen undtagelse) vil nogle gange lave en fuld tabelscanning, selvom indeks er tilgængeligt, simpelthen fordi det kan være hurtigere på små mængder data.
Eksempel:
-
Den sidste sætning i dette SQL Fiddle-eksempel kan være tilfreds med indekset, men forespørgselsplanen indikerede tydeligt en tabelscanning:
-
Men hvis vi indsætter nogle data , bruges indekset:
Hvad mere er, kan den beslutning, som DBMS træffer, påvirkes af, hvor frisk/nøjagtig statistik er.
Den mest pålidelige test for, om indekset bruges, er blot at fylde din database med repræsentative mængder data og derefter se på udførelsesplanen . Og glem ikke at time selve udførelsen af forespørgslen, mens du er i gang!
Et forenklet eksempel:Hvis hele tabellen passer ind i en enkelt databaseside, er det hurtigere blot at indlæse siden og gennemgå den sekventielt, end at vente på den ekstra I/O for siden, der indeholder indekset.>