Dit is eigenlijk moeilijker dan het lijkt - een typisch modern DBMS (en MS SQL Server is geen uitzondering) zal soms een volledige tabelscan uitvoeren, zelfs als de index beschikbaar is, simpelweg omdat dat sneller zou kunnen zijn bij kleine hoeveelheden gegevens.
Voorbeeld:
-
De laatste instructie in dit SQL Fiddle-voorbeeld kan worden voldaan door de index, maar het zoekplan gaf duidelijk een tabelscan aan:
-
Maar als we enkele gegevens invoegen , de index wordt gebruikt:
Bovendien kan de beslissing die het DBMS neemt worden beïnvloed door hoe vers/nauwkeurig de statistieken zijn.
De meest betrouwbare test om vast te stellen of de index wordt gebruikt, is door simpelweg uw database te vullen met representatieve hoeveelheden gegevens en vervolgens bekijk het uitvoeringsplan . En vergeet niet om de daadwerkelijke uitvoering van de query te timen, terwijl u toch bezig bent!
Een vereenvoudigd voorbeeld:als de hele tabel in een enkele databasepagina past, is het sneller om die pagina gewoon te laden en opeenvolgend te doorlopen, dan te wachten op de extra I/O voor de pagina die de index bevat.>