我在我的网站上提供搜索功能,当用户搜索记录时,我想显示查询所需的时间,以获得与谷歌相同的结果。当我们搜索任何内容时,谷歌会显示获得结果所需的时间吗?
为此,我在我的SP中声明了一个@start变量,并在最后找到差异,如下所示;
DECLARE @start_time DATETIME
SET @start_time = GETDATE()
-- my query
SELECT * FROM @search_temp_table
SELECT RTRIM(CAST(DATEDIFF(MS, @start_time, GETDATE()) AS CHAR(10))) AS 'TimeTaken'
还有其他简单快捷的方法,还是单行查询,我们可以通过它查找执行查询的时间?
我正在使用SQL Server 2005。
答案 0 :(得分:87)
答案 1 :(得分:25)
我发现这个更有帮助和简单
DECLARE @StartTime datetime,@EndTime datetime
SELECT @StartTime=GETDATE()
--Your Query to be run goes here--
SELECT @EndTime=GETDATE()
SELECT DATEDIFF(ms,@StartTime,@EndTime) AS [Duration in milliseconds]
答案 2 :(得分:20)
我们从应用程序代码中监视这一点,只是为了包括建立/关闭连接和通过网络传输数据所需的时间。这很直接......
Dim Duration as TimeSpan Dim StartTime as DateTime = DateTime.Now 'Call the database here and execute your SQL statement Duration = DateTime.Now.Subtract(StartTime) Console.WriteLine(String.Format("Query took {0} seconds", Duration.TotalSeconds.ToString())) Console.ReadLine()
答案 3 :(得分:17)
请使用
-- turn on statistics IO for IO related
SET STATISTICS IO ON
GO
和时间计算使用
SET STATISTICS TIME ON
GO
然后它将为每个查询提供结果。在查询输入窗口附近的消息窗口中。
答案 4 :(得分:14)
declare @sttime datetime
set @sttime=getdate()
print @sttime
Select * from ProductMaster
SELECT RTRIM(CAST(DATEDIFF(MS, @sttime, GETDATE()) AS CHAR(10))) AS 'TimeTaken'
答案 5 :(得分:8)
你为什么在SQL中这样做?不可否认,这确实显示了“真正的”查询时间,而不是查询时间+在网络中每次移动数据所花费的时间,但它会污染您的数据库代码。我怀疑你的用户会关心 - 实际上,他们可能而不是包含网络时间,因为这些都有助于他们查看页面所花费的时间。
为什么不在Web应用程序代码中进行计时?除了其他任何东西,这意味着对于不想要做任何时间的情况,但是你想要执行相同的过程,你不需要乱用你不喜欢的东西需要。
答案 6 :(得分:1)
您可以使用
SET STATISTICS TIME { ON | OFF }
显示解析,编译和执行每个语句所需的毫秒数
当SET STATISTICS TIME为ON时,将显示语句的时间统计信息。关闭时,不显示时间统计信息
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
答案 7 :(得分:0)
试试这个
DECLARE @StartTime DATETIME
SET @StartTime = GETDATE()
SET @EndTime = GETDATE()
PRINT 'StartTime = ' + CONVERT(VARCHAR(30),@StartTime,121)
PRINT ' EndTime = ' + CONVERT(VARCHAR(30),@EndTime,121)
PRINT ' Duration = ' + CONVERT(VARCHAR(30),@EndTime -@starttime,114)
如果没有,请尝试SET STATISTICS TIME ON