SQL Server Management Studio, 실행 시간을 밀리 초로 줄이는 방법


220

SSMS에서 배치를 제출 (예 : 쿼리 수행)하면 상태 표시 줄에 실행하는 데 걸린 시간이 표시됩니다. 밀리 초 해상도로 쿼리 시간을 표시하도록 SSMS를 구성 할 수 있습니까?

관심있는 섹션에 빨간색으로 동그라미 표시된 막대가 있습니다.

여기에 이미지 설명을 입력하십시오


3
실제로 질문에 대답하지는 않지만 SQL Server 프로파일 러 (로깅 도구)를 사용하여 쿼리 지속 시간을 확인할 수 있습니다. 지속 시간은 밀리 초 단위로 측정됩니다.
— AGuyCalledGerald

답변:


66

내가 이것을 찾을 때까지 나는 그것에 어려움을 겪고 있었다 ...

http://blog.sqlauthority.com/2009/10/01/sql-server-sql-server-management-studio-and-client-statistics/

또한 속성 창을 열면 실행 시간을 줄 수있는 마법의 "연결 경과 시간"이 표시 될 수 있습니다. 도움이 되길 바랍니다.


18
속성 창에 관한 부분은 실제로이 스레드에 대한 답변입니다. "경과 시간"이 당신을보고있는 얼굴에 앉아 있습니다.
— Eric

그리고 나는이 답변을 가장 정확한 답변으로 받아들입니다.
— Michael Goldshteyn

363

당신이하고 싶은 것은 이것입니다 :

set statistics time on

-- your query

set statistics time off

메시지 창에서 다음과 같이 출력됩니다.

SQL Server 실행 시간 : CPU 시간 = 6ms, 경과 시간 = 6ms


1
그러나 이렇게하면 메시지 창에 타이밍이 표시되므로 쿼리를 수행 한 후 수동으로 타이밍을 전환해야합니다. 또한 결과는 의미가없는 것 같습니다 (예 : CPU 시간 = 1357ms, 경과 시간 = 169ms). 하이퍼 스레딩이있는 8 개의 코어 (예 : 16 개의 가상)가 있어도 어떻게 추가됩니까?
— Michael Goldshteyn

2
CPU 시간이 더 큰 이유는 @MichaelGoldshteyn입니다. 멀티 코어 또는 하이퍼 스레드 CPU가 있기 때문입니다.

25
@MichaelGoldshteyn 1357/8 = 169.625. 우연의 일치?
— Dan J

3
@ DanJ, ​​DB는 메모리에서 모든 것을하지 않습니다. 종종 I / O가 관련되고 I / O는 더 경과 된 시간을 의미합니다.
— Michael Goldshteyn

9
@binki 1,555 일 전의 의견이 정확하지 않은 것이 맞습니다.
— benizi

125

다음 중 하나를 수행 하여 클라이언트 통계 를 켜십시오 .

  • 메뉴 : 쿼리> 클라이언트 통계 포함
  • 툴바 : 버튼을 클릭합니다 (실제 실행 시간 포함 옆에 있음)
  • 키보드 : Shift-Alt-S

그런 다음 마지막 10 회의 실행 (최대 평균)에 대한 타이밍, IO 데이터 및 행 개수 등을 기록하는 새 탭이 표시됩니다.

여기에 이미지 설명을 입력하십시오


2012 년 11 월의 @Ymagine First의 답변과 동일합니다. ... 위의 답변을 참조하십시오
— 보그 단 보그 다 노프에게

당시 해당 사이트 (철 기적으로)에 SQL 오류가 있었으므로 Google 캐시에서 키 정보를 추출하여 새로운 답변으로 게시했습니다. 나는 신용을 훔치려는 의도가 아니었고 아마도 원래 답변을 편집해야했을 것입니다.
— NickG

실제로, 나는 질문을 편집하기에 충분한 담당자 포인트가없는 것 같아서 아마 그렇게하지 않았을 것입니다.
— NickG

3
참고로 시간 통계 단위는 밀리 초 단위입니다 : brentozar.com/archive/2012/12/…
— congusbongus

17

proc에서 변수로 실행 시간을 얻으려면 :

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

-- Write Your Query


SELECT @EndTime=GETDATE()

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

그리고 이것을보십시오

쿼리 성능 측정 : "실행 계획 쿼리 비용"과 "취한 시간"


1
Datepart NS는 나노초를 나타냅니다. 밀리 초 동안 MS를 사용하십시오
— Milan Matějka

12

나는 똑같은 것을 따르고 있었고 다음 링크를 우연히 발견했습니다.

http://www.sqlserver.info/management-studio/show-query-execution-time/

성능을 측정하는 세 가지 방법을 보여줍니다. 모두 자신의 강점에 적합합니다. 내가 선택한 것은 다음과 같습니다.


@ Time1 DATETIME에 선언

DECLARE @ Time2 DATETIME

SET @ Time1 = GETDATE ()

-여기에 검색어 삽입

SET @ Time2 = GETDATE ()

경과 날짜로 선택 DATEDIFF (MILLISECOND, @ Time1, @ Time2)


쿼리 결과와 완료 시간이 표시됩니다.

도움이 되었기를 바랍니다.


나는 일정하지 않고 때로는 시간을 보여주고 때로는 0 만 보여줍니다.
— RMati

2

정보 표시 줄을 확장하는 방법을 모르겠습니다.

그러나 "메시지"탭에 표시되는 모든 쿼리에 대해 타이밍을 기본값으로 설정할 수 있습니다.

쿼리 창에서 쿼리 메뉴 항목으로 이동하여 "쿼리 옵션"을 선택한 다음 "실행"그룹에서 "고급"을 선택하고 "통계 시간 설정"/ "통계 IO 설정"확인란을 선택하십시오. 이 값은 설정된 통계를 켜고 끄는 것을 기억할 필요없이 각 쿼리의 메시지 영역에 표시됩니다.

Shift + Alt + S를 사용하여 언제든지 클라이언트 통계를 활성화 할 수도 있습니다


0

이 코드를 시도해 볼 수 있습니다.

USE AdventureWorks2012;
GO
SET STATISTICS TIME ON;
GO
SELECT ProductID, StartDate, EndDate, StandardCost 
FROM Production.ProductCostHistory
WHERE StandardCost < 500.00;
GO
SET STATISTICS TIME OFF;
GO
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.