Biasanya, memilih hasil dari fungsi skalar tidak akan banyak merugikan, tetapi filtering dengan itu dapat dengan mudah menghabiskan ratusan detik (tidak harus begitu).
Jika Anda perlu memfilter berdasarkan hasil fungsi skalar (WHERE col = dbo.scalar_function()
), seringkali membantu untuk membuat fungsi bernilai tabel sebaris sebagai gantinya. Itu akan mengembalikan nilainya sebagai satu-satunya baris tabel hasil. Anda kemudian akan melakukan inner join
dengan hasil fungsi, memfilter secara efektif berdasarkan nilai yang dikembalikan. Ini berfungsi karena SQL Server selalu dapat melepaskan fungsi bernilai tabel sebaris dan memasukkannya ke dalam kueri panggilan.
Perhatikan bahwa trik ini tidak akan berfungsi jika fungsinya multi-langkah. Ini tidak dapat dibatalkan.