sql >> Database teknologi >  >> RDS >> Sqlserver

Vil brugen af ​​en funktion til at forenkle SQL-forespørgsel massivt påvirke ydeevnen?

Normalt vælger et resultat af en skalarfunktion vil ikke skade meget, men filtrering ved at det nemt kan koste hundredvis af sekunder (dog ikke nødvendigvis).

Hvis du har brug for at filtrere efter et skalarfunktionsresultat (WHERE col = dbo.scalar_function() ), hjælper det ofte at lave en inline-tabelvurderet funktion i stedet for. Det ville returnere sin værdi som den eneste række i resultattabellen. Du ville derefter gøre inner join med funktionsresultatet, der effektivt filtreres efter den returnerede værdi. Dette virker, fordi SQL Server altid er i stand til at afvikle inline-tabelværdierede funktioner og inline dem i den kaldende forespørgsel.

Bemærk, at dette trick ikke virker, hvis funktionen er i flere trin. Disse kan ikke afvikles.




  1. Sådan nedgraderes/har du en tidligere version af Postgres DB i Postgres.app

  2. MYSQL, meget langsom rækkefølge

  3. Ren måde at bruge postgresql vinduesfunktioner i django ORM?

  4. Sådan får du row_number i MySQL