Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

UDF vs. direkte SQL-Leistung

  • Wenn Sie bei Purchases.CustomerID mitmachen möchten Sie sollten einen Index darauf setzen.
  • Wenn Sie häufig Wertebereiche abfragen, sollten Sie auch einen Index darauf setzen.

So wie es ist, bitten Sie den SQL-Server, zwischen zwei schlechten Plänen zu wählen.

SQL Server kann ungefähr abschätzen, wie viele Käufe von den > 1000 abgedeckt werden Abfrage und wählt darauf basierend einen Plan aus.

Es kann jedoch nicht erraten werden, wie viele von der UDF-Abfrage abgedeckt werden, und kann daher einen anderen Plan auswählen. Da es auf Unwissenheit beruht, kann es besser oder schlechter sein als der andere Plan, je nachdem, wie gut seine Vermutung ist.

Sie können die generierten Pläne sehen und die geschätzte Anzahl der Zeilen in jedem Plan sowie die tatsächliche Anzahl angeben. Diese geschätzten Zahlen berücksichtigen in jedem Fall die Wahl des Plans.