- Als je mee wilt doen op
Purchases.CustomerID
je zou er een index op moeten zetten. - Als je vaak naar waardebereiken zoekt, moet je daar ook een index op zetten.
Zoals het is, vraag je SQL-server om te kiezen tussen twee slechte plannen.
SQL Server kan ongeveer raden hoeveel aankopen worden gedekt door de > 1000
query, en zal op basis daarvan een plan kiezen.
Het kan echter niet raden hoeveel er worden gedekt door de UDF-query, dus het kan een ander plan kiezen. Omdat het onwetendheid is, kan het beter of slechter zijn dan het andere plan, afhankelijk van hoe goed de gok is.
U kunt de gegenereerde plannen zien en het zal u het geschatte aantal rijen in elk plan vertellen, en ook het werkelijke aantal. Die geschatte aantallen zijn verantwoordelijk voor de keuze van het plan in elk geval.