比较两个SQL的执行时间
比较两个SQL的执行时间
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PROC_SQL_COMP]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[PROC_SQL_COMP]
GO
/*--测试两组SQL的平均时间
利用osql.exe来测试两组 SQL 语句的执行时间
测试的存储过程中,调用了事务处理,所以如果测试的SQL语句有数据修改行为
会在调用结束后自动回滚事务,确保测试不会修改数据
已知的问题:
1.由于 osql 调用不允许使用多行,所以存储过程中会把回车换行替换成空格
对于 SQL 字符串中的回车换行,一样会被替换,所以对于字符串中包含回
车换行的 SQL 语句,可能会产生问题,除非回车换行不对 SQL 语句产生影响
2.由于是调用 xp_cmdshell 来执行 osql,所以要求有系统管理员的权限(比如sa)
3.调用 osql 使用了windows身份验证,这样省去了指定用户名及密码的麻烦
但如果你的 sql server 禁用了windows身份验证,则需要修改存储过程的 osql 调用
--邹建 2004.08(引用请保留此信息)--*/
/*--调用示例
exec dbo.PROC_SQL_COMP
'select top 1 * from sysobjects a,sysobjects b',
'select re=''1''
union all select 2'
--*/
create proc dbo.PROC_SQL_COMP
@sql1 varchar(7000), --测试的第一个sql语句
@sql2 varchar(7000), --测试的第二个sql语句
@t int=3 --测试次数
as
set nocount on
declare @s1 varchar(8000),@s2 varchar(8000),@tt varchar(20),@head varchar(8000)
declare @tb sysname
set @tb='tempdb.dbo.[temp_'+cast(newid() as varchar(36))+']'
exec('create table '+@tb+'(id int identity(0,1),m int)')
select @s1=replace(replace(@sql1,'''',''''''''''),char(13)+char(10),' ')
,@s2=replace(replace(@sql2,'''',''''''''''),char(13)+char(10),' ')
,@tt=cast(@t as varchar)
,@head='exec master..xp_cmdshell ''osql /E /d"'+db_name()+'"'
--使用了windows身份验证,如果不支持,则改 /E 为 /U"sa" /P"密码"
exec(@head+' /Q"set xact_abort on;declare @i int,@a datetime;set @i=0;while @i<'
+@tt+' begin select @i=@i+1,@a=getdate();begin tran;exec('''''+@s1
相关文档:
SQL中DATEADD和DATEDIFF的用法
日期:2008-07-17 作者:喜騰小二 來源:PHPChina
通常,妳需要獲得當前日期和計算一些其他的日期,例如,妳的程序可能需要判斷一個月的第一天或者最後一天。妳們大部分人大概都知道怎樣把日期進行分割(年 ......
SQL存储过程分页算法研究(支持千万级)
1.“俄罗斯存储过程”的改良版
CREATE procedure pagination1
(@pagesize int, --页面大小,如每页存储20条记录
@pageindex int --当前页码)
as set nocount on
begin
declare @indextable table(id int identity(1,1),nid int) --定义表变量
declare @PageL ......
SQL中IN,NOT IN,EXISTS,NOT EXISTS的用法和差别:
IN:确定给定的值是否与子查询或列表中的值相匹配。
IN 关键字使您得以选择与列表中的任意一个值匹配的行。
当要获得居住在 California、Indiana 或 Maryland 州的所有作者的姓名和州的列表时,就需要下列查询:
SELECT ProductID, ProductName from Northwind.dbo.Pro ......
大家打开这个链接可以看到很多数据库的连接方法。http://www.connectionstrings.com
这些数据库之间的数据交换就是这个贴子所要总结的内容。
(一)SQL Server之间
把远程数据库中的数据导入到本地数据库。
http://community.csdn.net/Expert/topic/5079/5079649.xml?temp=.7512018
http://community.csdn.net/Expert/ ......