Una funzione con valori di tabella in linea (TVF) è come una macro:viene espansa nella query esterna. Non ha un piano in quanto tale:l'SQL chiamante ha un piano.
Una TVF con più dichiarazioni ha un piano (troverà un riferimento).
I TVF sono utili quando si desidera variare l'elenco SELECT per un ingresso parametrizzato. Le TVF in linea vengono espanse e la selezione/dove esterna verrà considerata dall'ottimizzatore. Per le TVF multi-istruzione non è realmente possibile perché deve essere completata, quindi filtro.
Personalmente, userei un processo memorizzato su un TVF a più dichiarazioni. Sono più flessibili (ad es. suggerimenti, può cambiare stato, SET NOCOUNT ON, SET XACTABORT ecc.).
Non ho obiezioni ai TVF inline, ma non tendo a usarli per il codice rivolto ai client a causa dell'impossibilità di utilizzare SET e cambiare stato.