sql >> Database >  >> RDS >> Sqlserver

Zal het gebruik van een functie om SQL-query's te vereenvoudigen de prestaties enorm beïnvloeden?

Normaal gesproken selecteren een resultaat van een scalaire functie zal niet veel pijn doen, maar filteren door het kan gemakkelijk honderden seconden kosten (hoewel niet noodzakelijk).

Als u moet filteren op het resultaat van een scalaire functie (WHERE col = dbo.scalar_function() ), helpt het vaak om in plaats daarvan een inline tabelwaardefunctie te maken. Het zou zijn waarde retourneren als de enige rij van de resultatentabel. Je doet dan inner join met het functieresultaat, effectief filteren op de geretourneerde waarde. Dit werkt omdat SQL Server altijd inline tabelwaardige functies kan afwikkelen en inline in de aanroepende query kan opnemen.

Merk op dat deze truc niet werkt als de functie uit meerdere stappen bestaat. Deze kunnen niet worden afgewikkeld.




  1. Hoe SQLite Nullif() werkt

  2. Vind alle bladknooppuntrecords met hiërarchieid

  3. Is er een manier om een ​​varchar te converteren naar DATETIME in SQL SERVER 2008?

  4. Sqoop:kan mysql-stuurprogramma-uitzondering niet laden