博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
获取sql执行时间
阅读量:5890 次
发布时间:2019-06-19

本文共 2757 字,大约阅读时间需要 9 分钟。

 

sql server中获取要执行的sql或sql块的执行时间,方法之一如下:

declare @begin datetime,@end datetimeset @begin =getdate()--your sqlset @end=getdate()PRINT DATEDIFF(millisecond, @begin, @end)/1000.0 --单位:s

 

测试执行getdate()方法要花多长时间:

declare @begin datetime,@end datetimeset @begin =getdate()select getdate()set @end=getdate()PRINT DATEDIFF(millisecond, @begin, @end)/1000.0 --单位:s

 

执行结果截图如下:

在消息中,可见执行getdate()方法的时间是极短,可以忽略不计!

 

下面,以查询我本地的[user]表为例进行测试:

执行后的当前时间减去执行前的当前时间,即为sql或sql块的执行用时。

项目中,程序想拿到这个时间,只需把这个sql块封装成一个存储过程,存储过程有一个output参数,

把最后一行的print换成赋值给output输出参数即可。

存储过程如下:

CREATE PROCEDURE GetExecuteTimeProc@executeTime decimal(18,3) output AS  begin declare @begin datetime,@end datetime   set @begin =getdate()   select * from [user]   waitfor delay'00:00:5'--暂停5秒,模拟查询   set @end=getdate()   set @executeTime=cast((DATEDIFF(millisecond, @begin, @end)/1000.0) as decimal(18,3)) endGO

 

测试demo代码:

static void Main(string[] args)        {            string sql = "GetExecuteTimeProc";            SqlParameter[] parameters =                 {                  new SqlParameter("@executeTime",SqlDbType.Decimal){Direction=ParameterDirection.Output,Value=0}                };            DataTable dt = DBHelper.ExecuteSelect(sql, parameters,CommandType.StoredProcedure).Tables[0];            decimal executeTime = Convert.ToDecimal(parameters[0].Value);            int rowCount = 0;            if (dt != null)            {                rowCount = dt.Rows.Count;            }            Console.WriteLine("一共有{0}行数据\n查询耗时{1}秒",rowCount,executeTime);            Console.ReadKey();        }

DBHelper类:

public class DBHelper    {        public static DataSet ExecuteSelect(string sql, SqlParameter[] param, CommandType commandType)        {            string ConnectionString = Properties.Resources.conStr.ToString();            DataSet ds = new DataSet();            using (SqlConnection conn = new SqlConnection(ConnectionString))            {                conn.Open();                using (SqlCommand cmd =new SqlCommand(sql,conn))                {                    try                    {                        cmd.CommandType=commandType;                        if (param != null)                        {                            foreach (var item in param)                            {                                cmd.Parameters.Add(item);                            }                        }                        SqlDataAdapter sda=new SqlDataAdapter(cmd);                        sda.Fill(ds);                    }                    catch (Exception ex)                    {                            throw;                    }                }            }            return ds;        }    }
View Code

 

运行截图:

转载于:https://www.cnblogs.com/527289276qq/p/4591891.html

你可能感兴趣的文章
HDU 1425 ( sort )
查看>>
Windows Phone 7 框架和页面
查看>>
Directx11教程(31) 纹理映射(1)
查看>>
Android——Button的颜色
查看>>
创建ITS mobile 应用程序步骤
查看>>
《星辰傀儡线》人物续:“灭世者”、“疯狂者”、“叛逆者”三兄妹
查看>>
安装系统字体
查看>>
Spring的ApplicationContext加载备忘
查看>>
GoogleMapAPIV3.8.6离线包下载
查看>>
SILK 的 Tilt的意思
查看>>
IPC通信:Posix共享内存2
查看>>
GB2312转成UTF-8
查看>>
C#打开chm定位到特定页面
查看>>
[CareerCup][Google Interview] 寻找动态的中位数
查看>>
javascript操作iframe的那些事
查看>>
servlet相关 jar包位置 BAE上部署web应用
查看>>
路徑 z
查看>>
cpu分析简介
查看>>
1.备忘录模式
查看>>
Html学习笔记3
查看>>