sql >> Databáze >  >> RDS >> Sqlserver

Výkon serveru SQL:Co je rychlejší, uložená procedura nebo pohled?

Uložené procedury (SP) a SQL Views jsou různé "zvíře", jak bylo několikrát uvedeno v tomto příspěvku.

Pokud vyloučíme některé [obvykle drobné, s výjimkou okrajových případů] výkonové aspekty spojené s ukládáním plánu dotazů do mezipaměti, čas spojený s vázáním na uloženou proceduru a podobně,oba přístupy jsou v celku ekvivalentní, výkon- moudrý. Nicméně...

Pohled je omezen na cokoli, co lze vyjádřit jedním příkazem SELECT (dobře, možná pomocí CTE a několika dalších triků), ale obecně pohled je vázán na deklarativní formy dotazů . Uložená procedura na druhé straně může používat různé konstrukty procedurálního typu (i deklarativních) a díky tomu lze pomocí SP ručně vytvořit způsob řešení daného dotazu, který může být efektivnější než to, co mohl udělat optimalizátor dotazů SQL-Server (na základě jediného deklarativního dotazu). V těchto případech může být SP mnohem rychlejší (ale pozor... optimalizátor je docela chytrý a nepotřebuje mnoho k tomu, aby byl SP mnohem pomalejší než ekvivalentní zobrazení.)

Kromě těchto aspektů výkonu jsou SP všestrannější a umožňují širší rozsah dotazů a akcí než pohledy.



  1. Kombinované číslo objednávky / znak Mysql

  2. Převod řetězce do formátu časového razítka MySQL v php

  3. Spusťte pro odstranění řádků ze souvisejících tabulek před odstraněním řádků ze skutečné tabulky

  4. Existuje nějaký způsob, jak zajistit, aby PostgreSQL nesbalil interpunkci a mezery při řazení pomocí jazyka?