Zapytanie, MS SQL 2012, Wolne pierwsze wywołanie zapytania.

Zapytanie, MS SQL 2012, Wolne pierwsze wywołanie zapytania.
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam, mam problem z zapytaniem SQL. Jest to dość skomplikowane zapytanie, odwołuje się do innego zlinkowanego serwera, który poprzez widoki dokonuje łączeń (ok 7 tabel) i agregacji (po dniu). Tych danych pobiera ok 4mb na wywołanie. Następnie na serwerze docelowym dokonuje połączenia z kilkoma innymi tabelami (ok 10 tabel). Czas trwania zapytania to ok 2-3 sekund w zależności od obciążenia serwera i jest to w pełni akceptowalny czas. Problem polega na tym, że przy pierwszym wywołaniu zapytanie potrafi trwać nawet koło minuty( na co nie mogę sobie pozwolić), przy kolejnych, w krótkim odstępie czasu, już 2-3 sekundy. Niestety moja wiedza o bazach danych jest dość skromna i nie wiem dlaczego tak się dzieje oraz czy istnieje możliwość zniwelowania tego. Bardzo bym prosił o radę.

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

Kwestia pamięci podręcznej.
Optymalizacja tego zależy czysto od zapytań, jakie wykonujesz.

M8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 152
0

SQL SERVER optymalizuje sobie zapytanie zostawiając dane w pamięci podręcznej.
Dołóż to przed swoim zapytaniem:

Kopiuj
SET STATISTICS IO  ON

i pokaż wyniki(zakładka messages) zarówno jak uruchamiasz 1 raz i następne razy.

Co to znaczy, jak wykonujesz zapytanie 1 raz, tj. po restarcie serwera czy o co chodzi?Bo wygląda, że gdzieś w międzyczasie pamięć jest wyczyszczona.

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

Istotne jest też to, co to za zlinkowany serwer i jak się z nim łączysz.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.