2011-11-23 66 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


这将显示您的查询,然后花费的时间完成量的结果。

希望这会有所帮助。

相关问题