Bruker du In Line TVFs?

Om du bruker In Line Table Valued Functions (TVFs) så vet du kanskje at Multi Statement TVFs kan gi dårlig ytelse, spesielt for større dataset?

Ikke alle TVFs er like, vi anbefaler å skrive nye TVFs som In Line, det vil si at de ikke returnerer en tabell som har blitt definert (som en temp variable av typen table) men heller bruker en SELECT som direkte gir resultatet.

En fordel er at både JOIN og APPLY vil kunne gå mye raskere med In Line TVFs, så bare å prøve å måle seg frem til bedre ytelse!

Eksempel på to TVF som gir samme resultat men hvor den siste kan gi deg ytelsesproblemer:

--- In Line
--- Table Valued Function
CREATE FUNCTION MY_INLINE_TVF (@Parameter INT)
RETURNS TABLE
AS
RETURN
SELECT Column1, Column2
FROM MyTable
ORDER BY Column1;
GO

--- Multi Statement
--- Table Valued Function
CREATE FUNCTION MY_MULTISTATEMENT_TVF (@Parameter INT)
RETURNS @MyTableVariable TABLE (Z INT, X INT)
AS
BEGIN
INSERT INTO @MyTableVariable (Z, X)
SELECT Column1, Column2
FROM MyTable
ORDER BY Column1;
RETURN;
END
GO