UDF adalah kotak hitam untuk pengoptimal kueri sehingga dijalankan untuk setiap baris. Anda sedang melakukan kursor baris demi baris. Untuk setiap baris dalam aset, cari id tiga kali di tabel lain. Ini terjadi saat Anda menggunakan UDF skalar atau multi-pernyataan (UDF sebaris hanyalah makro yang diperluas ke kueri luar)
Salah satu dari banyak artikel tentang masalah ini adalah "Fungsi skalar, inlining, dan performa:Judul yang menghibur untuk postingan yang membosankan".
Sub-kueri dapat dioptimalkan untuk menghubungkan dan menghindari operasi baris demi baris.
Yang benar-benar Anda inginkan adalah ini:
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
Perbarui Februari 2019
SQL Server 2019 mulai memperbaiki masalah ini.