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

OPCJA (REKOMPILACJA) jest zawsze szybsza; Czemu?

Czasami używa się OPTION(RECOMPILE) ma sens. Z mojego doświadczenia wynika, że ​​jest to realna opcja tylko wtedy, gdy używasz dynamicznego SQL. Zanim zbadasz, czy ma to sens w Twojej sytuacji, polecam odbudowanie statystyk. Można to zrobić, uruchamiając następujące polecenie:

EXEC sp_updatestats

A potem odtworzenie planu wykonania. Zapewni to, że podczas tworzenia planu wykonania będą używane najnowsze informacje.

Dodanie OPTION(RECOMPILE) odbudowuje plan wykonania za każdym razem, gdy wykonywane jest zapytanie. Nigdy nie słyszałem, że opisane jako creates a new lookup strategy ale może po prostu używamy różnych terminów dla tej samej rzeczy.

Po utworzeniu procedury składowanej (podejrzewam, że wywołujesz sql ad-hoc z platformy .NET, ale jeśli używasz sparametryzowanego zapytania, kończy się to wywołaniem procedury składowanej) SQL Server próbuje określić najbardziej efektywny plan wykonania dla tego zapytania na podstawie danych w Twojej bazie danych i przekazanych parametrów (podsłuchiwanie parametrów), a następnie buforuje ten plan. Oznacza to, że jeśli utworzysz zapytanie, w którym w Twojej bazie danych znajduje się 10 rekordów, a następnie wykonasz je, gdy jest 100 000 000 rekordów, plan wykonania w pamięci podręcznej może nie być już najskuteczniejszy.

Podsumowując - nie widzę powodu, dla którego OPTION(RECOMPILE) byłoby tutaj korzyścią. Podejrzewam, że wystarczy zaktualizować statystyki i plan wykonania. Odbudowanie statystyk może być istotną częścią pracy DBA w zależności od Twojej sytuacji. Jeśli po aktualizacji statystyk nadal masz problemy, sugeruję opublikowanie obu planów wykonania.

Odpowiadając na Twoje pytanie — tak, powiedziałbym, że najlepszą opcją jest ponowne kompilowanie planu wykonania za każdym razem, gdy wykonujesz zapytanie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wstaw SqlBulkCopy z kolumną tożsamości

  2. Kod VBA, aby dodać połączoną tabelę z kluczem podstawowym

  3. Jak tworzyć zadania w edycji SQL Server Express

  4. Jak włączyć CDC w zestawie tabel LUB włączyć we wszystkich tabelach w bazie danych w programie SQL Server — samouczek dotyczący programu SQL Server

  5. Tally Table, aby wstawić brakujące daty między dwiema datami? SQL