获取sql执行时间
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执行时间的更多相关文章
- SQL:获取语句执行时间2
获取sql执行时间方法2 --清除缓存 CHECKPOINT; DBCC DROPCLEANBUFFERS; DBCC FREEPROCCACHE; DBCC FREESYSTEMCACHE ('AL ...
- php 获取代码执行时间和消耗的内存
做一些php性能测试的时候,要获取代码执行时间和消耗的内存,查了一下资料,发现php有自带的函数可以实现这个功能,具体实现代码如下: $t1 = microtime(true);// ... 执行代码 ...
- EXPLAIN PLAN获取SQL语句执行计划
一.获取SQL语句执行计划的方式 1. 使用explain plan 将执行计划加载到表plan_table,然后查询该表来获取预估的执行计划 2. 启用执行计划跟踪功能,即autotrace功能 3 ...
- 使用ttXactAdmin、ttSQLCmdCacheInfo、ttSQLCmdQueryPlan获取SQL相关具体信息[TimesTen运维]
使用ttXactAdmin.ttSQLCmdCacheInfo.ttSQLCmdQueryPlan获取SQL相关具体信息,适合于tt11以上版本号. $ ttversion TimesTen Rele ...
- MySQL 的性能(上篇)—— SQL 执行时间分析
简介 文中内容均为阅读前辈的文章所整理而来,参考文章已在最后全指明 本文分为上下两篇: 上篇:MySQL 的 SQL 执行时间分析 下篇:MySQL 性能优化 后端开发必然会接触到数据库,数据层的优劣 ...
- Java 获取SQL查询语句结果
step1:构造连接Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager.getConnec ...
- linux --> 获取进程执行时间
获取进程执行时间 一.时间概念 在linux下进行编程时,可能会涉及度量进程的执行时间.linux下进程的时间值分三种: 时钟时间(real time):指进程从开始执行到结束,实际执行的时间. 用户 ...
- Oracle中SQL调优(SQL TUNING)之最权威获取SQL执行计划大全
该文档为根据相关资料整理.总结而成,主要讲解Oracle数据库中,获取SQL语句执行计划的最权威.最正确的方法.步骤,此外,还详细说明了每种方法中可选项的意义及使用方法,以方便大家和自己日常工作中查阅 ...
- C# array与arraylist区别及获取sql字段名
array与arraylist的区别: 1. Array 的容量是固定的,而 ArrayList 的容量是根据需要自动扩展的.如果更改了 ArrayList.Capacity 属性的值,则自动进行内 ...
随机推荐
- linux mysql-server和mysql-client
我认为server和client是DBMS的两个面向不同操作对象的工具.server是DBMS面向物理层次,包含存储数据的一系列机制.处理方法的集成:client是DBMS面向用户,提供一系列工具为用 ...
- JS的一些常见验证代码
1//檢查空串 2function isEmpty(str){ 3 if((str == null)||(str.length == 0)) return (true); 4 else retu ...
- SSL单向认证和双向认证原理
注:本文为个人学习摘录,原文地址:http://edison0663.iteye.com/blog/996526 为了便于更好的认识和理解 SSL 协议,这里着重介绍 SSL 协议的握手协议.SSL ...
- 理解WebKit和Chromium(电子书)
前言 基础篇 WebKit, WebKit2, Chromium和Chrome介绍 WebKit和Blink WebKit和Chromium代码目录结构介绍 WebKit和Chromium功能模块 ...
- Gentoo 无线网络配置 wpa_supplicant
安装 安装net-wireless/wpa_supplicant包 emerge --ask wpa_supplicant 启动网络 为wpa_supplicant添加无线接口 在wpa_suppli ...
- updateMany
db.tblDaily.updateMany( {"Comments.ViewCount":0}, {$addToSet:{"Comments.$.CommentDate ...
- 第三次冲刺spring会议(第一次会议)
[例会时间]2014/5/20 21:15 [例会地点]9#446 [例会形式]轮流发言 [例会主持]马翔 [例会记录]兰梦 小组成员:兰梦 ,马翔,李金吉,赵天,胡佳
- 网络通信框架Apache MINA
Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络 ...
- android 编译的原理介绍
http://blog.csdn.net/mr_raptor/article/details/7540066
- TortoiseGit保存用户名及密码
保存密码方式如下,需要setting中填写自己的名字,Email地址,并在.gitconfig中 [credential] 中设置helper = store