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

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ę.

0

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

0

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

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.

0

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1