sql >> Databasteknik >  >> RDS >> Sqlserver

Kommer användningen av en funktion för att förenkla SQL Query massivt imapact prestanda?

Normalt väljar ett resultat av en skalär funktion kommer inte att skada mycket, men filtrering genom att det lätt kan kosta hundratals sekunder (inte nödvändigtvis dock).

Om du behöver filtrera efter ett skalärt funktionsresultat (WHERE col = dbo.scalar_function() ), hjälper det ofta att göra en inline-tabellvärderad funktion istället. Det skulle returnera sitt värde som den enda raden i resultattabellen. Du skulle då göra inner join med funktionsresultatet, filtrerar effektivt efter det returnerade värdet. Detta fungerar eftersom SQL Server alltid kan avveckla inline-tabellvärderade funktioner och infoga dem i den anropande frågan.

Observera att det här tricket inte fungerar om funktionen är en flerstegsfunktion. Dessa kan inte lindas upp.




  1. Verktyg för att konvertera t-sql (SQL Server) lagrad procedur till pgsql (postgre sql)

  2. Konstruera en datamodell för ett parkeringshanteringssystem

  3. MayBeSQL kommer till Microsoft Access!

  4. Uppdatera inte kolumnen om uppdateringsvärdet är null