sql >> Database >  >> RDS >> Sqlserver

Verschil tussen een inline-functie en een weergave

Na het lezen van veel van de antwoorden hier, wil ik opmerken dat er een groot verschil is tussen een inline tabelwaardefunctie en elk ander soort functie (scalar of multi-line TVF).

Een inline TVF is gewoon een geparametriseerde weergave. Het kan worden uitgebreid en geoptimaliseerd, net als een weergave. Het is niet vereist om iets te materialiseren voordat "resultaten worden geretourneerd" of iets dergelijks (hoewel de syntaxis helaas een RETURN heeft .

Een groot voordeel dat ik heb gevonden van een inline TVF ten opzichte van een weergave, is dat het vereiste parametrisering afdwingt, terwijl je bij een weergave ervan moet uitgaan dat de beller op de juiste manier deelneemt aan het gebruik van de weergave of het gebruik ervan beperkt.

Zo hebben we in DW veel grote feitentabellen met een typisch Kimball stermodel. Ik heb een zicht op een fact table-centered model, dat zonder enige beperking wordt aangeroepen, honderden miljoenen rijen zal retourneren. Door een inline TVF met de juiste parametrering te gebruiken, kunnen gebruikers niet per ongeluk om alle rijen vragen. Prestaties zijn grotendeels niet te onderscheiden tussen de twee.



  1. Lijst met SQL-tags en tagfiltering

  2. Hoe NHibernate te gebruiken met zowel MySQL-server als Microsoft SQL-server 2008

  3. een optie die al is geselecteerd bij het laden van de pagina in de vervolgkeuzelijst en ook kan worden gewijzigd

  4. MySQL:alias gebruiken als kolom