sql >> Databasteknik >  >> RDS >> Sqlserver

udf vs direkt sql prestanda

  • 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.




  1. MySQL grupperar resultat efter tidsperioder

  2. MySql:ta bort tabellrader beroende på kolumndubblettvärden?

  3. MySQL LEFT JOIN duplicerar resultaten

  4. Förbereda en MySQL- eller MariaDB-server för produktion - del två