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.