sql >> Databasteknik >  >> RDS >> Sqlserver

Skillnaden mellan en inline-funktion och en vy

Efter att ha läst många av svaren här vill jag notera att det är stor skillnad mellan en inline-tabellvärderad funktion och vilken annan typ av funktion som helst (skalär eller multi-line TVF).

En inline TVF är helt enkelt en parametriserad vy. Den kan utökas och optimeras bort precis som en vy. Det krävs inte att något materialiseras innan du "returerar resultat" eller något liknande (även om syntaxen tyvärr har en RETURN .

En stor fördel som jag har funnit med en inline TVF jämfört med en vy är att den tvingar fram nödvändig parametrering medan du med en vy måste anta att den som ringer på lämpligt sätt kommer att gå med eller begränsa användningen av vyn.

Vi har till exempel många stora faktatabeller i DW med en typisk Kimball stjärnmodell. Jag har en syn på en faktatabellcentrerad modell, som anropas utan några begränsningar, kommer att returnera hundratals miljoner rader. Genom att använda en inline TVF med lämplig parametrering kan användare inte av misstag fråga efter alla rader. Prestanda går i stort sett inte att skilja mellan de två.



  1. Hur funktionen QUOTENAME() fungerar i SQL Server (T-SQL)

  2. Rekursiv ersättning från en teckentabell

  3. Oracle ROWID som funktion/procedurparameter

  4. flyway kan inte ansluta till postgres-behållaren inom docker-entrypoint-initdb.d-skriptet