- Om du vill gå med på
Purchases.CustomerID
du bör sätta ett index på det. - Om du ofta frågar efter värdeintervall bör du sätta ett index på det också.
Som det är ber du SQL-servern att välja mellan två dåliga planer.
SQL Server kan gissa ungefär hur många köp som kommer att täckas av > 1000
fråga och kommer att välja en plan baserat på det.
Det kan dock inte gissa hur många som kommer att omfattas av UDF-frågan, så kan välja en annan plan. Eftersom det pågår okunnighet kan det vara bättre eller sämre än den andra planen beroende på hur bra den är.
Du kan se de genererade planerna och det kommer att berätta det uppskattade antalet rader i varje plan, och även det faktiska antalet. Dessa uppskattade siffror står för valet av plan i varje enskilt fall.