Po przeczytaniu wielu odpowiedzi tutaj, chciałbym zauważyć, że istnieje duża różnica między wbudowaną funkcją o wartości tabeli a dowolnym innym rodzajem funkcji (skalarna lub wielowierszowa TVF).
Wbudowany TVF to po prostu sparametryzowany widok. Można go rozszerzać i optymalizować, tak jak widok. Nie jest wymagane materializowanie czegokolwiek przed "zwróceniem wyników" lub czymś podobnym (chociaż niestety składnia ma RETURN
.
Dużą zaletą, jaką odkryłem w przypadku wbudowanego TVF w porównaniu z widokiem, jest to, że wymusza wymaganą parametryzację, podczas gdy w przypadku widoku musisz założyć, że wywołujący odpowiednio dołączy lub ograniczy korzystanie z widoku.
Na przykład mamy wiele dużych tabel faktów w DW z typowym modelem gwiazdy Kimballa. Mam pogląd na model oparty na tabeli faktów, który wywołany bez żadnych ograniczeń zwróci setki milionów wierszy. Korzystając z wbudowanego TVF z odpowiednią parametryzacją, użytkownicy nie są w stanie przypadkowo zapytać o wszystkie wiersze. Wydajność jest w dużej mierze nie do odróżnienia między nimi.