Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

SQL Server:funzioni con valori di tabella e stored procedure

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.