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

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

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

declare @begin datetime,@end datetime
set @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))
end
GO

测试demo代码:

  static void Main(string[] args)
{
string sql = "GetExecuteTimeProc";
SqlParameter[] parameters =
{
new SqlParameter("@executeTime",SqlDbType.Decimal){Direction=ParameterDirection.Output,Value=}
};
DataTable dt = DBHelper.ExecuteSelect(sql, parameters,CommandType.StoredProcedure).Tables[];
decimal executeTime = Convert.ToDecimal(parameters[].Value);
int rowCount = ;
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;
}
}

运行截图:

获取sql执行时间的更多相关文章

  1. SQL:获取语句执行时间2

    获取sql执行时间方法2 --清除缓存 CHECKPOINT; DBCC DROPCLEANBUFFERS; DBCC FREEPROCCACHE; DBCC FREESYSTEMCACHE ('AL ...

  2. php 获取代码执行时间和消耗的内存

    做一些php性能测试的时候,要获取代码执行时间和消耗的内存,查了一下资料,发现php有自带的函数可以实现这个功能,具体实现代码如下: $t1 = microtime(true);// ... 执行代码 ...

  3. EXPLAIN PLAN获取SQL语句执行计划

    一.获取SQL语句执行计划的方式 1. 使用explain plan 将执行计划加载到表plan_table,然后查询该表来获取预估的执行计划 2. 启用执行计划跟踪功能,即autotrace功能 3 ...

  4. 使用ttXactAdmin、ttSQLCmdCacheInfo、ttSQLCmdQueryPlan获取SQL相关具体信息[TimesTen运维]

    使用ttXactAdmin.ttSQLCmdCacheInfo.ttSQLCmdQueryPlan获取SQL相关具体信息,适合于tt11以上版本号. $ ttversion TimesTen Rele ...

  5. MySQL 的性能(上篇)—— SQL 执行时间分析

    简介 文中内容均为阅读前辈的文章所整理而来,参考文章已在最后全指明 本文分为上下两篇: 上篇:MySQL 的 SQL 执行时间分析 下篇:MySQL 性能优化 后端开发必然会接触到数据库,数据层的优劣 ...

  6. Java 获取SQL查询语句结果

    step1:构造连接Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager.getConnec ...

  7. linux --> 获取进程执行时间

    获取进程执行时间 一.时间概念 在linux下进行编程时,可能会涉及度量进程的执行时间.linux下进程的时间值分三种: 时钟时间(real time):指进程从开始执行到结束,实际执行的时间. 用户 ...

  8. Oracle中SQL调优(SQL TUNING)之最权威获取SQL执行计划大全

    该文档为根据相关资料整理.总结而成,主要讲解Oracle数据库中,获取SQL语句执行计划的最权威.最正确的方法.步骤,此外,还详细说明了每种方法中可选项的意义及使用方法,以方便大家和自己日常工作中查阅 ...

  9. C# array与arraylist区别及获取sql字段名

    array与arraylist的区别: 1.  Array 的容量是固定的,而 ArrayList 的容量是根据需要自动扩展的.如果更改了 ArrayList.Capacity 属性的值,则自动进行内 ...

随机推荐

  1. 《JS权威指南学习总结--6.1原型》

    内容要点: 一.每一个JS对象(null除外)都和另一个对象相关联."另一个"对象就是我们熟知的原型,每一个对象都从原型继承属性. 二.所有通过对象直接量创建的对象都具有同一个原型 ...

  2. .Net使用JsonSchema验证Json

    最近项目中遇到了这样的需求,需要对上传的Json进行验证,以确保Json数据的准确性.前后使用了两种方式来验证: (1)第一种方式的实现思想:根据Json数据的格式,严格定义相应的类结构,并在Syst ...

  3. cmd alias 自定义命令

    简短步骤:1.关闭所有在运行的CMD窗口2.创建文件C:\cmd-alias.bat,包含以下内容:[python] view plain copydoskey sayhello=echo Hello ...

  4. Java多态(二)

    public class ExtendsTest { public static void main(String[] args) { A a1 = new A(); A a2 = new B(); ...

  5. 【Python之路】第一篇--Linux基础命令

    pwd 命令 查看”当前工作目录“的完整路径 pwd -P # 显示出实际路径,而非使用连接(link)路径:pwd显示的是连接路径 .   表示当前目录 ..  表示上级目录 /  表示根目录 ls ...

  6. TCP网络编程小结

    一.套接字编程基础 1.套接字地址结构 通用的地址结构是 struct sockaddr{ unsigned short sa_family; ]; } IPv4的套接字地址结构是 struct in ...

  7. python 九九乘法表!小练习

    # 1*1 = 1 # 1*2 = 2 2*2 = 4 # 1*3 = 3 2*3 = 6 3*3 = 9 i = 1 j = 1 for j in range(1,10): for i in ran ...

  8. JSP之JavaBean

    一.定义 1 JavaBean是一个遵循特定写法的Java类,它通常具有如下特点: 这个Java类必须具有一个无参的构造函数 属性必须私有化. 私有化的属性必须通过public类型的方法暴露给其它程序 ...

  9. C语言_基础代码_01

    #include<stdio.h> #include<stdlib.h> #define BUFFERSIZE 1024/*允许处理的最长行有1024个字符*/ /*编译环境v ...

  10. 高效程序猿之 VS2010快速生成代码模板

    本文转载,原文地址 http://edi.wang/Post/2011/12/8/efficient-code-monkey-1-vs2010-generate-code-template 一只程序猿 ...