sql >> Databáze >  >> RDS >> Sqlserver

SQL Server:Funkce s hodnotou tabulky vs. uložené procedury

Funkce s hodnotou vložené tabulky (TVF) je jako makro:je rozšířena do vnějšího dotazu. Nemá žádný plán jako takový:volající SQL má plán.

Vícepříkazová TVF má plán (najde odkaz).

TVF jsou užitečné tam, kde chcete změnit seznam SELECT pro parametrizovaný vstup. Inline TVF jsou rozšířeny a optimalizátor zváží vnější výběr/kde. U vícepříkazových TVF není optimalizace ve skutečnosti možná, protože musí být dokončena, pak filtr.

Osobně bych použil uložený proces přes vícepříkazový TVF. Jsou flexibilnější (např. rady, mohou změnit stav, SET NOCOUNT ON, SET XACTABORT atd.).

Nemám žádné námitky proti inline TVF, ale nemám tendenci je používat pro klientský kód kvůli nemožnosti použít SET a změnit stav.



  1. PGLogical 1.1 balíčky pro PostgreSQL 9.6beta1

  2. Pomoc s:ERROR 1025 (HY000):Chyba při přejmenování .... (chyba:150)

  3. Prague PostgreSQL Meetup

  4. utf8 při importu do mysql zkomolený