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