2011-11-23 83 views
164

當我在SSMS中提交批處理(例如,執行查詢)時,我看到在狀態欄中執行所花的時間。是否可以配置SSMS以毫秒分辨率顯示查詢時間?SQL Server Management Studio中,如何將執行時間縮短到毫秒

這裏是我與感興趣的部分談到了酒吧紅色圓圈:

enter image description here

+3

並非真正回答您的問題,但您可以使用SQL Server Profiler(一種日誌工具)來檢查查詢的持續時間。持續時間以毫秒爲單位進行測量。 – AGuyCalledGerald

回答

273

你想要做的是這樣的:

set statistics time on 

-- your query 

set statistics time off 

這將有輸出在消息窗口中看起來像這樣:

SQL Server執行Tim es:CPU時間= 6 ms,經過時間= 6 ms。

+0

但是這將時間放在消息窗口中,這意味着在執行查詢後我必須手動翻轉它。而且,結果似乎沒有意義,例如:CPU時間= 1357毫秒,經過時間= 169毫秒。即使我擁有8個帶有超線程的內核(即16個虛擬內存),這又如何加起來呢? –

+0

@MichaelGoldshteyn不幸的是,我不認爲有一種方法可以修改SSMS狀態欄中的已用時間。我認爲你唯一的選擇將其捕獲到'MS'將是我的職位。 – 2011-11-23 19:03:15

+1

@MichaelGoldshteyn至於爲什麼你的CPU時間更長,這是因爲你有一個多核或超線程CPU。 – 2011-11-23 19:04:02

14

要得到執行時間爲您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] 

看這

Measuring Query Performance : "Execution Plan Query Cost" vs "Time Taken"

+1

Datepart NS代表毫微秒,使用毫秒ms –

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 
2

我不知道關於擴大信息欄做。

但是,您可以將設置的時間設置爲默認顯示在「消息」選項卡中的所有查詢。

在查詢窗口中,進入查詢菜單項,選擇「查詢選項」,然後在「執行」組中選擇「高級」並選中「設置統計時間」/「設置統計IO」複選框。 這些值將顯示在每個查詢的消息區域中,而不必記住打開和關閉設置的統計數據。

你也可以使用Shift + Alt鍵+ S通過執行下列操作之一在任何時間,以使客戶端統計

87

打開客戶端統計

  • 菜單:查詢>包含客戶端統計
  • 工具欄:點擊按鈕(旁邊包括實際的執行時間)
  • 鍵盤:Shift + Alt鍵-S

然後你會得到一個新的選項卡,它記錄最近10次壓縮(加上平均值)的時間,IO數據和行數等。):

enter image description here

+0

與2012年11月的@Ymagine First的答案相同。看到上面的答案... –

+0

該網站(具有諷刺意味的是)當時有一個SQL錯誤,所以我從Google緩存中提取了關鍵信息併發布爲新答案。我的意思不是竊取信用,也許我應該編輯原始答案。 – NickG

+0

事實上,我似乎沒有足夠的代表來編輯問題,所以這可能是我沒有這樣做的原因。 – NickG

3

我是同樣的事情後遇到下列鏈接,是輝煌的偶然:

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

它顯示性能測量的三種不同的方式。一切都有利於自己的長處。我選擇了一個如下:


DECLARE @時間1 DATETIME

DECLARE @時間2 DATETIME

SET @時間1 = GETDATE()

- 在這裏插入查詢

SET @ Time2 = GETDATE()

SELECT DATEDIFF(MILLISE COND,@時間1,@時間2)AS Elapsed_MS


這將顯示您的查詢,然後花費的時間完成量的結果。

希望這會有所幫助。

相關問題