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

SQL-serverydelse:Hvad er hurtigere, en lagret procedure eller en visning?

Stored Procedures (SP'er) og SQL Views er forskellige "dyr" som angivet flere gange i dette indlæg.

Hvis vi udelukker nogle [typisk mindre, bortset fra udkantssager] præstationsovervejelser forbundet med cachen af ​​forespørgselsplanen, den tid, der er forbundet med binding til en lagret procedure og sådan, de to tilgange er i det store og hele ækvivalente, ydeevne- klogt. Men...

En visning er begrænset til, hvad der end kan udtrykkes i en enkelt SELECT-sætning (vel, muligvis med CTE'er og et par andre tricks), men generelt er en visning bundet til deklarative former for forespørgsler . En lagret procedure på den anden kan bruge forskellige proceduremæssige type konstruktioner (såvel som deklarative), og som følge heraf kan man ved hjælp af SP'er håndlave en måde at løse en given forespørgsel på, som kan være mere effektiv end hvad SQL-Servers query optimizer kan have gjort (på grundlag af en enkelt deklarativ forespørgsel). I disse tilfælde kan en SP'er være meget hurtigere (men pas på... optimeringsværktøjet er ret smart, og der skal ikke meget til for at gøre en SP meget langsommere end den tilsvarende visning.)

Bortset fra disse præstationsovervejelser er SP'erne mere alsidige og tillader en bredere række af forespørgsler og handlinger end synspunkterne.



  1. Hierarkisk forespørgsel - Optælling af poster, der hører til forældre- og underordnede steder

  2. Oracle 11g får alle matchede forekomster af et regulært udtryk

  3. Postgres aftrækker og rækkelåsning

  4. Hvordan får man aktuel dato og tid i MySQL?