- Si desea unirse en
Purchases.CustomerID
deberías ponerle un índice. - Si consulta con frecuencia rangos de valores, también debe incluir un índice.
Tal como está, le está pidiendo al servidor SQL que elija entre dos malos planes.
SQL Server puede adivinar aproximadamente cuántas compras cubrirá el > 1000
consulta, y elegirá un plan basado en eso.
Sin embargo, no puede adivinar cuántos cubrirá la consulta UDF, por lo que puede elegir un plan diferente. Debido a que se basa en la ignorancia, podría ser mejor o peor que el otro plan dependiendo de qué tan bueno sea su suposición.
Puede ver los planes generados y le indicará el número estimado de filas en cada plan, y también el número real. Esos números estimados dan cuenta de la elección del plan en cada caso.