2012-07-26 3 views
99

SqlServer 2005를 사용하는 두 개의 t-sql 쿼리가 있습니다. 각 쿼리를 실행하는 데 걸리는 시간을 어떻게 측정 할 수 있습니까?t-sql 쿼리를 실행하는 데 걸리는 시간을 측정하십시오.

내 스톱워치를 사용하여 자르지 않습니다.

+2

SQL Server Management Studio를 사용하고 있습니까? 일반적으로 두 번째 해결 방법으로 만 각 쿼리에 대해 경과 된 시간을 표시합니다. 또한 관련 질문을보십시오 : http://stackoverflow.com/questions/8247587/sql-server-management-studio-how-to-get-execution-time-down-to-milliseconds – mellamokb

+0

@mellamokb : 저는 ssms를 사용하고 있습니다. 두 번째 해상도는 너무 거칩니다. – TheMoot

+0

@LittleBobbyTables : 나는 ssms에서 뛰고 있습니다. 어떻게 멈추지? – TheMoot

답변

100

이벤트 간의 "경과 시간"을 측정하는 간단한 방법 중 하나는 현재 날짜와 시간을 잡는 것입니다. SQL Server Management Studio를

SELECT GETDATE(); 
SELECT /* query one */ 1 ; 
SELECT GETDATE(); 
SELECT /* query two */ 2 ; 
SELECT GETDATE(); 

에서

는 변수에 그 날짜 값을 잡을 수, 경과 시간을 계산하고, DATEDIFF 함수를 사용하려면 :

DECLARE @t1 DATETIME; 
DECLARE @t2 DATETIME; 

SET @t1 = GETDATE(); 
SELECT /* query one */ 1 ; 
SET @t2 = GETDATE(); 
SELECT DATEDIFF(millisecond,@t1,@t2) AS elapsed_ms; 

SET @t1 = GETDATE(); 
SELECT /* query two */ 2 ; 
SET @t2 = GETDATE(); 
SELECT DATEDIFF(millisecond,@t1,@t2) AS elapsed_ms; 

하나의 방법입니다. SQL 프로필러를 사용하여 쿼리에 대한 경과 시간을 얻을 수도 있습니다.

+0

이 작업을 수행하는 방법에 대한 SQL 프로파일 러 문서를 찾았으나 몇 시간을 읽지 않아도되는 문서를 찾을 수 없었습니다. "Profiler for Dummies"링크를 추천 할 수 있습니까? – TheMoot

+0

@TheMoot 나는 늦었지만 MSDN 링크가 "[Subject] for Dummies"에 적합하다는 것을 알고 있습니다. :) 이 [SQL Profiler 사용 방법] (https://msdn.microsoft.com/en-us/library/ff650699.aspx)을 참조하십시오. –

+0

다른 사람이 SQL 관리 Studio에서이 문제를 사용하고 있습니까? 필자는 테스트를 위해 저장 프로 시저에서 약 15 개의 쿼리 세트를 추가 했으므로 실행하는 데 너무 오래 걸립니다. 나는 7 분에 취소했고 모든 타이머는 단지 약 2 분이었다. 그래서 일부 반환 텍스트 캐시 문제가 있다고 생각하거나 너무 많은 데 대한 모든 datediffs를 계산하는 데 너무 오래 걸릴 수도 있습니다. –

170

당신은 위의 답변을보다 더 정확하게 측정하려면 :

set statistics time on 

-- Query 1 goes here 

-- Query 2 goes here 

set statistics time off 

결과는 메시지 창에있을 것입니다.

업데이트 (2015년 7월 29일) : 인기 요청에 의해

, 난 당신이 해당 구성 요소 대신, 시간에 전체 저장 프로 시저 실행을 사용할 수있는 코드를 작성했습니다.

-- Use the last_elapsed_time from sys.dm_exec_procedure_stats 
-- to time an entire stored procedure. 

-- Set the following variables to the name of the stored proc 
-- for which which you would like run duration info 
DECLARE @DbName NVARCHAR(128); 
DECLARE @SchemaName SYSNAME; 
DECLARE @ProcName SYSNAME=N'TestProc'; 

SELECT CONVERT(TIME(3),DATEADD(ms,ROUND(last_elapsed_time/1000.0,0),0)) 
     AS LastExecutionTime 
FROM sys.dm_exec_procedure_stats 
WHERE OBJECT_NAME(object_id,database_id)[email protected] AND 
     (OBJECT_SCHEMA_NAME(object_id,database_id)[email protected] OR @SchemaName IS NULL) AND 
     (DB_NAME(database_id)[email protected] OR @DbName IS NULL) 
+2

데이터베이스에 대한 액세스가 읽기 전용 인 경우이 기능을 사용할 수 없다는 점에 유의하십시오. 'SET STATISTICS TIME을 사용하려면 사용자에게 Transact-SQL 문을 실행할 수있는 적절한 권한이 있어야합니다. SHOWPLAN 권한은 필요하지 않습니다. ' from : http://technet.microsoft.com/en-us/library/ms190287.aspx – Rob

+4

저장 프로 시저를 실행해야하는 전체 시간을 볼 수있는 방법이 있습니까? 지금 나는 많은 단일 측정을 본다. – Rookian

+1

@Rookian, 나는 당신을 돕기 위해 몇 가지 코드를 답에 추가했습니다. –

8
DECLARE @StartTime datetime 
DECLARE @EndTime datetime 
SELECT @StartTime=GETDATE() 

-- Write Your Query 


SELECT @EndTime=GETDATE() 

--This will return execution time of your query 
SELECT DATEDIFF(NS,@StartTime,@EndTime) AS [Duration in millisecs] 

더 나은 You can also See this solution

+6

시간이 나노초 단위로 나타납니다. (MS, @ StartTime, @ EndTime) – d512

6

이가의 평균을 측정 할 것이다 :이 마지막 실행 걸리는 시간을 반환하지만, 또한 가치가있을 수 있습니다 sys.dm_exec_procedure_stats에 의해 반환되는 추가 통계가있다 귀하의 질의를 반복하십시오! 더 정확한 독서를 위해 중대하다.

declare @tTOTAL int = 0 
declare @i integer = 0 
declare @itrs integer = 100 

while @i < @itrs 
begin 
declare @t0 datetime = GETDATE() 

--your query here 

declare @t1 datetime = GETDATE() 

set @tTotal = @tTotal + DATEDIFF(MICROSECOND,@t0,@t1) 

set @i = @i + 1 
end 

select @tTotal/@itrs 
+2

필자는'MICROSECOND'를'MILLISECOND'로 변경하고'begin'과'declare @ t0 ...'사이에 다음 라인을 삽입 할 때마다 캐시를 ​​삭제하기 위해 : ' 검문소; DBCC DROPCLEANBUFFERS; DBCC FREEPROCCACHE;'. 작품은 매력과 정확히 내가 찾고있는 것과 같습니다. +1 –

+1

저는 yr 스 니펫을 사용하여 점진적 성능 조정을 스토어드 프로 시저로 조정했습니다. 매우 매끄 럽습니다! – JayJay

+0

감사합니다. 나는 지금 오랫동안 SQL을 해왔다. 그 독특한 언어. 그러나 일단 꼬임이 무엇인지 알게되고 그것을 꼬집는 방법을 알게되면 XD – HumbleWebDev

관련 문제