Detta är faktiskt svårare än det ser ut - ett typiskt modernt DBMS (och MS SQL Server är inget undantag) kommer ibland att göra en fullständig tabellsökning även om index är tillgängligt, helt enkelt för att det kan vara snabbare på små mängder data.
Exempel:
-
Den sista satsen i detta SQL Fiddle-exempel kan vara nöjd med indexet, men frågeplanen indikerade tydligt en tabellskanning:
-
Men om vi infogar lite data , indexet används:
Vad mer, beslutet som DBMS fattar kan påverkas av hur färsk/exakt statistik är.
Det mest tillförlitliga testet för om indexet används är att helt enkelt fylla din databas med representativa mängder data och sedan titta på exekveringsplanen . Och glöm inte att tajma det faktiska utförandet av frågan medan du håller på!
Ett förenklat exempel:om hela tabellen passar in i en enskild databassida är det snabbare att helt enkelt ladda den sidan och gå igenom den sekventiellt än att vänta på den extra I/O för sidan som innehåller index.>