UDF'en er en sort boks til forespørgselsoptimeringsværktøjet, så det udføres for hver række. Du laver en række-for-række-markør. For hver række i et aktiv skal du slå et id op tre gange i en anden tabel. Dette sker, når du bruger skalære UDF'er eller UDF'er med flere sætninger (In-line UDF'er er simpelthen makroer, der udvides til den ydre forespørgsel)
En af mange artikler om problemet er "Skalære funktioner, inlining og ydeevne:En underholdende titel til et kedeligt indlæg".
Underforespørgslerne kan optimeres til at korrelere og undgå række-for-række-operationer.
Hvad du virkelig ønsker er dette:
SELECT
uc.id AS creator,
uu.id AS updater,
uo.id AS owner,
a.[name]
FROM
asset a
JOIN
user uc ON uc.user_pk = a.created_by
JOIN
user uu ON uu.user_pk = a.updated_by
JOIN
user uo ON uo.user_pk = a.owned_by
Opdatering feb 2019
SQL Server 2019 begynder at løse dette problem.