Mam DB SQL 2005 uruchomiony w środowisku wirtualnym.Jaki jest najlepszy sposób porównania 2 wariantów zapytania SQL dla wydajności?
Aby uprościć rzeczy, załóżmy, że mam dwa zapytania SQL SELECT. Obaj robią dokładnie to samo. Ale próbuję je przeanalizować dla celów wydajności.
Generalnie, uruchamiam lokalną bazę danych, ładuję niektóre dane i używam taktowania, aby porównać jeden wariant z innymi wariantami.
Ale w tym przypadku, ponieważ DB jest duży i jest to testbox, klient umieścił go na hoście, który obsługuje również inne maszyny wirtualne.
DB jest zbyt duży, by można go było ściągnąć lokalnie, więc nie ma go (przynajmniej na razie).
Ale moim głównym problemem jest to, że po uruchomieniu kwerend na serwerze, czas jest wszędzie. Mogę uruchomić + dokładnie + to samo zapytanie 4 razy i uzyskać czasy 7sek, 8 minut, 3: 45 minut i 15 minut.
Moją pierwszą myślą było użycie USTAW STATYSTYKI IO WŁ.
Ale to daje zasadniczo statystyki odczytu i zapisu na tabelach będących kwerendami, które, w zależności od odmian zapytań (tabele tymczasowe, widoki, połączenia itp.) Nie mogą być dokładnie porównane, z wyjątkiem agregat.
W takim razie ustawiam STATISTICS TIME ON i używam czasu procesora, ale wydaje się, że pomijam wszystkie IO, co również nie zapewnia dobrej linii bazowej.
Moje pytanie brzmi: czy istnieje inna technika statystyczna lub analiza wydajności, która mogłaby być przydatna w takiej sytuacji?
Jako * bardzo * proste porównanie, można uruchomić je w tej samej serii z planem wykonania spektaklu i sprawdzić, który z nich zajmuje najwięcej całkowitego udziału procentowego. – adrianbanks
@adrian Plan wykonania jest tylko przewodnikiem. szacowany koszt poddrzewienia A vs B często jest nieprawidłowy, gdy faktycznie został przeprowadzony – RichardTheKiwi
@Richard: Czy to prawda, nawet przy użyciu rzeczywistego planu wykonania? – adrianbanks