带你深入了解T-SQL的十一种设计模式
2008-09-04 10:00:41 来源:WEB开发网2、不自然的筛选:HAVING子句限定
select city,count(*) AS NumberCity
FROM customers
GROUP BY city
HAVING city like ’A%’
注:HAVING子句的目的是在结果集被检索出来后再筛选查询。实际上,SQL SERVER内在地转换HAVING子句为where子句(两种方法查询的执行计划是相同的),如果SQL SERVER不执行此优化,则针对包含大量数据行的表,因需要在筛选前从表中检索所有行,则性能方面可能会遭受重大损失。
四、execTOR(运行)
提供创建并执行动态T-SQL字符串的模板
--中断除当前连接之外的所有用户连接
DECLARE @s int,@sql nvarchar(128)
DECLARE spids CURSOR FOR
select spid
FROM master..sysprocesses
where spid <> @@SPID AND net_address<>’’
FOR READ ONLY
OPEN spids
FETCH spids INTO @s
WHILE (@@FETCH_STATUS = 0)
BEGIN
SET @sql = ’KILL ’ + cast(@s AS varchar)
exec sp_executesql @sql
FETCH spids INTO @s
END
CLOSE spids
DEALLOCATE spids
注:上述语句中的sp_executesql可以用exec()替换,但推荐使用sp_executesql,因为与exec()相比,sp_executesql支持参数化查询,并可从动态T-SQl调用返回一个结果代码。如果动态代码产生一个严重级达到或超过11的错误,sp_executesql将在它的结果代码中返回错误码。
五、Conveyor(传送)
提供一种通过存储过程链传送信息的机制。与GoF的责任链模式(Chain of Responsibility)相类似。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接