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. linux mysql-server和mysql-client

    我认为server和client是DBMS的两个面向不同操作对象的工具.server是DBMS面向物理层次,包含存储数据的一系列机制.处理方法的集成:client是DBMS面向用户,提供一系列工具为用 ...

  2. JS的一些常见验证代码

    1//檢查空串  2function isEmpty(str){  3 if((str == null)||(str.length == 0)) return (true);  4 else retu ...

  3. SSL单向认证和双向认证原理

    注:本文为个人学习摘录,原文地址:http://edison0663.iteye.com/blog/996526 为了便于更好的认识和理解 SSL 协议,这里着重介绍 SSL 协议的握手协议.SSL ...

  4. 理解WebKit和Chromium(电子书)

    前言   基础篇 WebKit, WebKit2, Chromium和Chrome介绍 WebKit和Blink WebKit和Chromium代码目录结构介绍 WebKit和Chromium功能模块 ...

  5. Gentoo 无线网络配置 wpa_supplicant

    安装 安装net-wireless/wpa_supplicant包 emerge --ask wpa_supplicant 启动网络 为wpa_supplicant添加无线接口 在wpa_suppli ...

  6. updateMany

    db.tblDaily.updateMany( {"Comments.ViewCount":0}, {$addToSet:{"Comments.$.CommentDate ...

  7. 第三次冲刺spring会议(第一次会议)

    [例会时间]2014/5/20 21:15 [例会地点]9#446 [例会形式]轮流发言 [例会主持]马翔 [例会记录]兰梦 小组成员:兰梦 ,马翔,李金吉,赵天,胡佳

  8. 网络通信框架Apache MINA

    Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络 ...

  9. android 编译的原理介绍

    http://blog.csdn.net/mr_raptor/article/details/7540066

  10. TortoiseGit保存用户名及密码

    保存密码方式如下,需要setting中填写自己的名字,Email地址,并在.gitconfig中 [credential] 中设置helper = store