Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL-Server Performance:Was ist schneller, eine Stored Procedure oder eine View?

Gespeicherte Prozeduren (SPs) und SQL-Ansichten sind unterschiedliche „Beasts“, wie mehrfach in diesem Beitrag erwähnt wurde.

Wenn wir einige [normalerweise geringfügige, außer in Randfällen] Leistungsüberlegungen im Zusammenhang mit dem Zwischenspeichern des Abfrageplans, der Zeit, die mit dem Binden an eine gespeicherte Prozedur verbunden ist, und dergleichen ausschließen, sind die beiden Ansätze im Großen und Ganzen gleichwertig. weise. Allerdings...

Eine Ansicht ist auf alles beschränkt, was in einer einzigen SELECT-Anweisung ausgedrückt werden kann (na ja, möglicherweise mit CTEs und ein paar anderen Tricks), aber im Allgemeinen ist eine Ansicht an deklarative Formen von Abfragen gebunden . Eine gespeicherte Prozedur hingegen kann verschiedene prozedurale Konstrukte verwenden (sowie deklarative), und infolgedessen kann man mithilfe von SPs eine Möglichkeit zur Lösung einer bestimmten Abfrage von Hand erstellen, die möglicherweise effizienter ist als das, was der Abfrageoptimierer von SQL-Server getan hätte (auf der Grundlage einer einzelnen deklarativen Abfrage). In diesen Fällen kann ein SPs viel schneller sein (aber Vorsicht ... der Optimierer ist ziemlich schlau und es braucht nicht viel, um einen SP viel langsamer als die entsprechende Ansicht zu machen.)

Abgesehen von diesen Leistungsüberlegungen sind die SPs vielseitiger und ermöglichen ein breiteres Spektrum an Abfragen und Aktionen als die Ansichten.