可以首先定义两个时间变量,@BeginTime 和@EndTime数据类型均为Time。

执行SQL语句之前,先把系统当前时间赋值给@BeginTime变量,在SQL语句结果时,再把当前系统时间赋值给@EndTime变量。

然后使用DATEDIFF函数计算时间差,即可得到SQL执行所需要时间。

参考下面演示例子:   

SQL execution time_sqlSQL execution time_time_02代码
--删除计划缓存中的所有元素,通过指定计划句柄或 SQL 句柄从计划缓存中删除特定计划,或者删除与指定资源池相关联的所有缓存条目。
--
http://msdn.microsoft.com/zh-cn/library/ms174283.aspx
DBCC FREEPROCCACHE

--从缓冲池中删除所有清除缓冲区
--
http://msdn.microsoft.com/zh-cn/library/ms187762.aspx
DBCC DROPCLEANBUFFERS  

GO

DECLARE @BeginTime TIME(4)
DECLARE @EndTime TIME(4)
--把当前系统日期时间赋值给@BeginTime变量
SET @BeginTime = CURRENT_TIMESTAMP;

BEGIN
    
--判断表是否在存在,如果存在,首先删除。
    IF OBJECT_ID ('[dbo].[TestExecuteTime]','U'IS NOT NULL DROP TABLE [dbo].[TestExecuteTime];
    
--创建一个全新的表
    CREATE TABLE [dbo].[TestExecuteTime]([Number] INT NOT NULL);
    
--下面是插入数据
    DECLARE @I INT = 0
    
WHILE @I <= 10
    
BEGIN
        
INSERT INTO [dbo].[TestExecuteTime] ([Number]VALUES (@I);
        
SET @I = @I + 1
    
END
END
--把当前系统日期时间赋值给@EndTime变量
SET @EndTime = CURRENT_TIMESTAMP;

--计算执行时间
SELECT DATEDIFF(millisecond, @BeginTime@EndTimeAS [ExecuteTime]