Mam dwa zapytania t-sql przy użyciu SqlServer 2005. Jak mogę zmierzyć, ile czasu zajmuje wykonanie każdego z nich?
Korzystanie ze stopera nie wystarcza.
performance
sql-server-2005
TheMoot
źródło
źródło
Odpowiedzi:
Jednym z uproszczonych sposobów mierzenia „czasu, który upłynął” między zdarzeniami jest po prostu pobranie aktualnej daty i godziny.
W SQL Server Management Studio
Aby obliczyć upływ czasu, możesz pobrać te wartości dat do zmiennych i użyć funkcji DATEDIFF:
To tylko jedno podejście. Czas, jaki upłynął, można również uzyskać dla zapytań za pomocą programu SQL Profiler.
źródło
SET @t1 = GETDATE();
u góry zapytania, a następnieSET @t2 = GETDATE();SELECT 'NOTE 1',DATEDIFF(millisecond,@t1,@t2) AS elapsed_ms;SET @t1 = GETDATE();
wklejam w rozsądnych punktach zapytania (odpowiednio edytując „UWAGA 1”). Traktowanie selekcji jako punktów przerwania, a nie pomiarów, jest semantycznie identyczne z twoim podejściem (chociaż ostateczny zestaw @ t1 jest fałszywy, a to zakłada, że wszystkie zapytania powinny być mierzone). Jest to czysto mentalna optymalizacja / typowanie (jedna wklej na punkt przerwania, a nie dwie wklejki na zapytanie).Jeśli chcesz dokładniejszego pomiaru niż powyższa odpowiedź:
Wyniki będą w oknie Wiadomości .
Aktualizacja (2015-07-29):
Na popularne żądanie napisałem fragment kodu, którego można użyć do mierzenia czasu uruchomienia całej procedury składowanej, a nie jej składników. Chociaż zwraca to tylko czas potrzebny do ostatniego uruchomienia, istnieją dodatkowe statystyki zwrócone przez,
sys.dm_exec_procedure_stats
które również mogą mieć wartość:źródło
To use SET STATISTICS TIME, users must have the appropriate permissions to execute the Transact-SQL statement. The SHOWPLAN permission is not required.
from: technet.microsoft.com/en-us/library/ms190287.aspxMożesz również zobaczyć to rozwiązanie
źródło
Innym sposobem jest użycie wbudowanej funkcji SQL Server o nazwie,
Client Statistics
która jest dostępna poprzez Menu> Zapytanie> Uwzględnij statystyki klienta .Możesz uruchomić każde zapytanie w oddzielnym oknie zapytania i porównać wyniki, które są podane w
Client Statistics
zakładce tuż obokMessages
zakładki.Na przykład na poniższym obrazku pokazuje, że średni czas, jaki upłynął, aby uzyskać odpowiedź serwera na jedno z moich zapytań, wynosi 39 milisekund.
Możesz przeczytać wszystkie 3 sposoby uzyskiwania czasu wykonania tutaj . Może być nawet konieczne wyświetlenie w
Estimated Execution Plan
ctrlLcelu dalszego zbadania zapytania.źródło
jeszcze lepiej, będzie to mierzyć średnią z n iteracji zapytania! Doskonały do dokładniejszego czytania.
źródło
MICROSECOND
sięMILLISECOND
i wyczyścić cache każdym razem po włożeniu między liniamibegin
ideclare @t0 ...
:CHECKPOINT; DBCC DROPCLEANBUFFERS; DBCC FREEPROCCACHE;
. Działa jak urok i dokładnie to, czego szukałem. +1Kliknij ikonę Statystyki, aby wyświetlić, a następnie uruchomić zapytanie, aby uzyskać czasy i dowiedzieć się, jak wydajne jest Twoje zapytanie
źródło