如何在不下载实际数据的情况下测试查询速度?

时间:2011-09-26 20:57:38

标签: sql-server-2008 ssms

我在远程Sql Server 2008上有多个结果集存储过程。目前,该过程返回一个相当大的结果集,该结果集将在与数据库托管在同一服务器上的网站上进行解析和使用。

当Sql Server显示获取数据所需的时间时,大部分时间用于将数据从远程服务器实际下载到本地开发机器。

如何通过删除与该查询返回的数据相关联的下载时间来更好地测试查询的实际速度?

我希望获得查询的执行时间,就像数据库服务器是我的计算机本地一样。

3 个答案:

答案 0 :(得分:0)

SentryOne计划资源管理器 - 免费下载 - 允许您在工具中生成实际执行计划时执行此操作。它在服务器上运行查询并丢弃结果,因此指示的时间纯粹是服务器上的时间。有关计划资源管理器的更多信息:

答案 1 :(得分:0)

您可以将数据注入临时表。您在流程中增加了一些开销,但与网络延迟相比可忽略不计。

SELECT * INTO #TempTable FROM [Table]

INTO Clause (Transact-SQL)

答案 2 :(得分:0)

要从考虑中删除网络问题,只需查看执行统计信息,我经常将结果分配给变量。

所以而不是

SELECT name,type, COUNT(*)
FROM master..spt_values
GROUP BY name,type

例如,我会使用

DECLARE @name nvarchar(35), @type nchar(3), @count int

SELECT @name= name, @type = type, @count = COUNT(*)
FROM master..spt_values
GROUP BY name,type

SSMS中有一个选项可以在执行后丢弃结果,但也会丢弃SET STATISTICS IO ON等的输出,这些选项没有用处。