sql >> Databasteknik >  >> RDS >> Sqlserver

SQL-serverprestanda:Vad är snabbare, en lagrad procedur eller en vy?

Stored Procedures (SP) och SQL Views är olika "beasts" som nämnts flera gånger i det här inlägget.

Om vi ​​utesluter vissa [vanligtvis mindre, med undantag för fransfall] prestationsöverväganden som är associerade med cachelagring av frågeplanen, tiden för bindning till en lagrad procedur och sådant, är de två tillvägagångssätten på det hela taget likvärdiga, prestanda- klokt. Men...

En vy är begränsad till vad som helst som kan uttryckas i en enda SELECT-sats (nåja, möjligen med CTE och några andra knep), men generellt sett är en vy knuten till deklarativa former av frågor . En lagrad procedur på den andra kan använda olika procedurtypskonstruktioner (såväl som deklarativa), och som ett resultat, med hjälp av SP:er, kan man hantverka ett sätt att lösa en given fråga som kan vara mer effektivt än vad SQL-Servers frågeoptimerare kan ha gjort (på basis av en enda deklarativ fråga). I dessa fall kan en SPs vara mycket snabbare (men se upp... optimeraren är ganska smart, och det krävs inte mycket för att göra en SP mycket långsammare än motsvarande vy.)

Bortsett från dessa prestationsöverväganden är SP:erna mer mångsidiga och tillåter ett bredare utbud av förfrågningar och åtgärder än åsikterna.



  1. Körs utlösaren BEFORE INSERT för varje rad i infogning vid dubblettnyckeluppdateringsfråga

  2. Hur man väljer en delsträng i Oracle SQL upp till ett specifikt tecken?

  3. JSON_QUERY() Exempel i SQL Server (T-SQL)

  4. SQL Server - stoppa eller bryt exekvering av ett SQL-skript