For når du bruger FIXED værdier med AUTO-PARAMETERISERING slået fra, så ved forespørgselsplanen PRÆCIS hvilken værdi den skal køre forespørgslen efter. Så planen er indstillet SPECIFIKT til disse værdier.
Men når du bruger variabler, er den plan, der vil blive lagt ind i forespørgselscachen, den, der indeholder de parametriserede variabler - som kan erstattes af enhver variabel og vil genbruge den samme plan. Derfor skal disse planer være mere robuste og generiske for at håndtere "bedste gennemsnitssag".
I SQL Server 2008 kan du indstille, om simple parametre automatisk parametreres eller ej, så du konsekvent får den "bedste gennemsnitlige sag"-plan - med alt det gode og det dårlige.
Ref:
EDIT - om ydeevne
Hvad angår ydeevne, kan optimeringsværktøjet tage fejl - i dette tilfælde kiggede den på statistik for the exact values
og mente, at indekset ikke er nyttigt (kan være et problem med vippepunkter), så planen er en clusterscanning i stedet for. Det er en fin kunst at gennemtvinge en forespørgselsplan - men det er klart, at det er 50 % hurtigere at bruge et indeks for
- specifik hardware
- specifik datafordeling på tidspunktet
- specifikke værdier angivet
Medmindre jeg havde en meget god grund, ville jeg ikke spille Query Optimizer (f.eks. ved at bruge indekstip), medmindre jeg har masser af data til at bevise, at det uvægerligt vil gøre det hurtigere.