我在我的网站上提供搜索功能,当用户搜索记录然后我想显示查询所用的时间以获得与谷歌相同的结果.当我们搜索任何内容时,谷歌会显示获得结果所需的时间吗?
为此我在我的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.
好吧,如果你真的想在你的数据库中做到这一点,有一个更准确的方式,如MSDN中给出的:
SET STATISTICS TIME ON
您也可以从您的应用程序中读取此信息.
我发现这个更有帮助和简单
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]
我们从应用程序代码中监视这一点,只是为了包括建立/关闭连接和通过网络传输数据所需的时间.这很直截了当......
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()
请用
-- turn on statistics IO for IO related SET STATISTICS IO ON GO
并用于计算时间
SET STATISTICS TIME ON GO
然后它将为每个查询提供结果.在查询输入窗口附近的消息窗口中.
declare @sttime datetime set @sttime=getdate() print @sttime Select * from ProductMaster SELECT RTRIM(CAST(DATEDIFF(MS, @sttime, GETDATE()) AS CHAR(10))) AS 'TimeTaken'
你为什么在SQL中这样做?不可否认,这确实显示了"真正的"查询时间,而不是查询时间+在网络中每次移动数据所花费的时间,但它会污染您的数据库代码.我怀疑你的用户会关心 - 事实上,他们可能更愿意包括网络时间,因为它们都有助于他们看到页面所花费的时间.
为什么不在Web应用程序代码中进行计时?除了别的,这意味着,你的情况并不想做任何时机,但要执行相同的进程内,你不需要浪费时间的东西你不需要.