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

Czy w pewnym momencie swojej kariery z SQL Server wąchanie parametrów po prostu wyskakuje i atakuje?

Niezupełnie odpowiedź, ale podzielę się moim doświadczeniem.

Wąchanie parametrów zajęło kilka lat SQL Server, aby mnie ugryźć, kiedy wróciłem do Developer DBA po przejściu głównie do pracy prod DBA. Zrozumiałem więcej o silniku, jak działa SQL, co najlepiej pozostawić klientowi itp. i byłem lepszym programistą SQL.

Na przykład dynamiczny SQL lub kursory lub po prostu zły kod SQL prawdopodobnie nigdy nie będą podlegać podsłuchiwaniu parametrów. Ale lepiej ustawić programowanie lub jak uniknąć dynamicznego SQL lub bardziej eleganckiego SQL, najprawdopodobniej będzie.

Zauważyłem to dla złożonego kodu wyszukiwania (mnóstwo warunków) i złożonych raportów, w których domyślne parametry wpłynęły na plan. Kiedy zobaczę, jak mniej doświadczeni programiści napisaliby ten kod, nie będzie on cierpiał na podsłuchiwanie parametrów.

W każdym razie wolę maskowanie parametrów niż WITH RECOMPILE. Aktualizacja statystyk lub indeksów i tak wymusza ponowną kompilację. Ale po co cały czas rekompilować? Odpowiedziałem gdzie indziej na jedno z twoich pytań z linkiem, który wspomina, że ​​parametry są wykrywane podczas kompilacji, więc też w to nie wierzę.

Tak, maskowanie parametrów jest narzutem, ale pozwala optymalizatorowi na ocenę każdego przypadku z osobna, a nie na całkowitą ponowną kompilację. Zwłaszcza w przypadku rekompilacji SQL Server 2005 na poziomie instrukcji

OPTYMALIZUJ NA NIEZNANE w SQL Server 2008 również wydaje się robić dokładnie to samo, co maskowanie. Mój kolega SQL Server MVP i ja spędziliśmy trochę czasu na badaniu i doszliśmy do tego wniosku.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak używać BCP lub Sql Server Management Studio do pobierania danych BLOB z SQL Server?

  2. Zrozumienie diagramu zakleszczeń programu SQL Server

  3. SQL WYBIERZ GG:MM - GG:MM

  4. Dołączanie znaków za pomocą SET BASED APPROACH (Sql Server 2005)

  5. Jak śledzić liczbę zmian zachodzących w kolumnie? T-SQL - Serwer SQL