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

Rozdíl mezi inline funkcí a pohledem

Po přečtení mnoha odpovědí zde bych rád poznamenal, že existuje velký rozdíl mezi funkcí s inline tabulkovou hodnotou a jakoukoli jinou funkcí (skalární nebo víceřádková TVF).

Inline TVF je jednoduše parametrizovaný pohled. Lze jej rozšiřovat a optimalizovat stejně jako pohled. Před „vrácením výsledků“ nebo něčím podobným není nutné nic materializovat (i když bohužel syntaxe má RETURN .

Velkou výhodou inline TVF nad pohledem je, že vynucuje požadovanou parametrizaci, zatímco u pohledu musíte předpokládat, že se volající vhodně připojí nebo omezí použití pohledu.

Například máme mnoho velkých tabulek faktů v DW s typickým modelem hvězdy Kimball. Mám názor na model zaměřený na tabulku faktů, který volá bez jakéhokoli omezení a vrátí stovky milionů řádků. Použitím inline TVF s vhodnou parametrizací se uživatelé nemohou náhodně zeptat na všechny řádky. Výkon je mezi nimi do značné míry nerozeznatelný.



  1. jak mohu zálohovat a obnovit data z databáze mysql

  2. Nelze volat dll z Oracle

  3. sql server rozděluje hodnoty oddělené čárkami do sloupců

  4. pokud jinak v rámci CTE?