Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Różnica między funkcją inline a widokiem

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Utrzymywanie wartości tożsamości w wielu tabelach

  2. Utwórz tabelę z kompresją w SQL Server (T-SQL)

  3. Agent programu SQL Server — pakiet SSIS — błąd 0x80131904 — upłynął limit czasu

  4. Visual Studio 2012 — Wycofanie kreatora publikowania bazy danych?

  5. Implementacja wyszukiwania pełnotekstowego w SQL Server 2016 dla początkujących