Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Dlaczego wykonywanie procedur składowanych jest szybsze niż zapytanie SQL ze skryptu?

SQL Server zasadniczo wykonuje te kroki, aby wykonać dowolny zapytanie (wywołanie procedury składowanej lub instrukcja SQL ad-hoc):

1) sprawdź składnię zapytania
2) jeśli wszystko jest w porządku - sprawdza pamięć podręczną planu, aby zobaczyć, czy ma już plan wykonania dla tego zapytania
3) jeśli istnieje plan wykonania - ten plan jest ( ponownie)używane i zapytanie wykonane
4) jeśli nie ma jeszcze planu, ustalany jest plan wykonania
5) plan jest przechowywany w pamięci podręcznej planu w celu późniejszego ponownego wykorzystania
6) zapytanie jest wykonywane

Chodzi o to, że ad hoc SQL i procedury składowane są traktowane nie inaczej .

Jeśli zapytanie SQL ad-hoc prawidłowo wykorzystuje parametry – tak jak powinno, aby zapobiec atakom typu SQL injection – jego charakterystyka wydajności nie różni się i zdecydowanie nie jest gorsza niż wykonanie procedury składowanej.

Procedura składowana ma inne zalety (na przykład nie ma potrzeby przyznawania użytkownikom bezpośredniego dostępu do tabeli), ale pod względem wydajności użycie odpowiednio sparametryzowanych zapytań SQL ad-hoc jest równie wydajne jak przy użyciu procedur składowanych.

Aktualizacja: używanie procedur składowanych w niesparametryzowanych zapytania są lepsze z dwóch głównych powodów:

  • ponieważ każde zapytanie niesparametryzowane jest nowym, innym zapytanie do SQL Server, musi przejść przez wszystkie etapy ustalania planu wykonania, dla każdego zapytania (a tym samym marnowanie czasu - a także marnowanie miejsca na pamięć podręczną planu, ponieważ przechowywanie planu wykonania w pamięci podręcznej planu w końcu nie pomaga , ponieważ to konkretne zapytanie prawdopodobnie nie zostać wykonany ponownie)

  • zapytania niesparametryzowane są zagrożone atakiem SQL injection i należy ich unikać za wszelką cenę



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Co to jest baza danych, dlaczego baza danych?

  2. Zwróć wszystkie klucze obce i sprawdź ograniczenia w bazie danych programu SQL Server (przykłady T-SQL)

  3. Aktualizacja SQL z jednej tabeli do drugiej na podstawie dopasowania ID

  4. LEN() vs DATALENGTH() w SQL Server

  5. Nie można usunąć schematu , ponieważ nie istnieje lub nie masz uprawnień. - SQL Server / samouczek TSQL, część 29