SqlServer 2005를 사용하는 두 개의 t-sql 쿼리가 있습니다. 각 쿼리를 실행하는 데 걸리는 시간을 어떻게 측정 할 수 있습니까?t-sql 쿼리를 실행하는 데 걸리는 시간을 측정하십시오.
내 스톱워치를 사용하여 자르지 않습니다.
SqlServer 2005를 사용하는 두 개의 t-sql 쿼리가 있습니다. 각 쿼리를 실행하는 데 걸리는 시간을 어떻게 측정 할 수 있습니까?t-sql 쿼리를 실행하는 데 걸리는 시간을 측정하십시오.
내 스톱워치를 사용하여 자르지 않습니다.
이벤트 간의 "경과 시간"을 측정하는 간단한 방법 중 하나는 현재 날짜와 시간을 잡는 것입니다. 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 프로필러를 사용하여 쿼리에 대한 경과 시간을 얻을 수도 있습니다.
이 작업을 수행하는 방법에 대한 SQL 프로파일 러 문서를 찾았으나 몇 시간을 읽지 않아도되는 문서를 찾을 수 없었습니다. "Profiler for Dummies"링크를 추천 할 수 있습니까? – TheMoot
@TheMoot 나는 늦었지만 MSDN 링크가 "[Subject] for Dummies"에 적합하다는 것을 알고 있습니다. :) 이 [SQL Profiler 사용 방법] (https://msdn.microsoft.com/en-us/library/ff650699.aspx)을 참조하십시오. –
다른 사람이 SQL 관리 Studio에서이 문제를 사용하고 있습니까? 필자는 테스트를 위해 저장 프로 시저에서 약 15 개의 쿼리 세트를 추가 했으므로 실행하는 데 너무 오래 걸립니다. 나는 7 분에 취소했고 모든 타이머는 단지 약 2 분이었다. 그래서 일부 반환 텍스트 캐시 문제가 있다고 생각하거나 너무 많은 데 대한 모든 datediffs를 계산하는 데 너무 오래 걸릴 수도 있습니다. –
당신은 위의 답변을보다 더 정확하게 측정하려면 :
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)
데이터베이스에 대한 액세스가 읽기 전용 인 경우이 기능을 사용할 수 없다는 점에 유의하십시오. 'SET STATISTICS TIME을 사용하려면 사용자에게 Transact-SQL 문을 실행할 수있는 적절한 권한이 있어야합니다. SHOWPLAN 권한은 필요하지 않습니다. ' from : http://technet.microsoft.com/en-us/library/ms190287.aspx – Rob
저장 프로 시저를 실행해야하는 전체 시간을 볼 수있는 방법이 있습니까? 지금 나는 많은 단일 측정을 본다. – Rookian
@Rookian, 나는 당신을 돕기 위해 몇 가지 코드를 답에 추가했습니다. –
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]
시간이 나노초 단위로 나타납니다. (MS, @ StartTime, @ EndTime) – d512
이가의 평균을 측정 할 것이다 :이 마지막 실행 걸리는 시간을 반환하지만, 또한 가치가있을 수 있습니다 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
필자는'MICROSECOND'를'MILLISECOND'로 변경하고'begin'과'declare @ t0 ...'사이에 다음 라인을 삽입 할 때마다 캐시를 삭제하기 위해 : ' 검문소; DBCC DROPCLEANBUFFERS; DBCC FREEPROCCACHE;'. 작품은 매력과 정확히 내가 찾고있는 것과 같습니다. +1 –
저는 yr 스 니펫을 사용하여 점진적 성능 조정을 스토어드 프로 시저로 조정했습니다. 매우 매끄 럽습니다! – JayJay
감사합니다. 나는 지금 오랫동안 SQL을 해왔다. 그 독특한 언어. 그러나 일단 꼬임이 무엇인지 알게되고 그것을 꼬집는 방법을 알게되면 XD – HumbleWebDev
SQL Server Management Studio를 사용하고 있습니까? 일반적으로 두 번째 해결 방법으로 만 각 쿼리에 대해 경과 된 시간을 표시합니다. 또한 관련 질문을보십시오 : http://stackoverflow.com/questions/8247587/sql-server-management-studio-how-to-get-execution-time-down-to-milliseconds – mellamokb
@mellamokb : 저는 ssms를 사용하고 있습니다. 두 번째 해상도는 너무 거칩니다. – TheMoot
@LittleBobbyTables : 나는 ssms에서 뛰고 있습니다. 어떻게 멈추지? – TheMoot