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

Prestazioni SQL-Server:cos'è più veloce, una stored procedure o una vista?

Le stored procedure (SP) e le viste SQL sono "bestie" diverse, come affermato più volte in questo post.

Se escludiamo alcune considerazioni sulle prestazioni [in genere minori, ad eccezione dei casi marginali] associate alla memorizzazione nella cache del piano di query, il tempo associato all'associazione a una stored procedure e simili, i due approcci sono nel complesso equivalenti, prestazioni- saggio. Comunque...

Una vista è limitata a tutto ciò che può essere espresso in una singola istruzione SELECT (beh, possibilmente con CTE e alcuni altri trucchi), ma in generale, una vista è legata a forme dichiarative di query . Una stored procedure sull'altra può utilizzare vari costrutti di tipo procedurale (oltre a quelli dichiarativi) e, di conseguenza, utilizzando gli SP, è possibile creare a mano un modo per risolvere una determinata query che potrebbe essere più efficiente rispetto a quanto potrebbe aver fatto Query Optimizer di SQL-Server (sulla base di una singola query dichiarativa). In questi casi, un SP può essere molto più veloce (ma attenzione... l'ottimizzatore è abbastanza intelligente e non ci vuole molto per rendere un SP molto più lento della vista equivalente.)

A parte queste considerazioni sulle prestazioni, gli SP sono più versatili e consentono una gamma più ampia di richieste e azioni rispetto alle visualizzazioni.