WEB开发网
开发学院数据库MSSQL Server 带你深入了解T-SQL的十一种设计模式 阅读

带你深入了解T-SQL的十一种设计模式

 2008-09-04 10:00:41 来源:WEB开发网   
核心提示: 2、不自然的筛选:HAVING子句限定 select city,count(*) AS NumberCityFROM customersGROUP BY cityHAVING city like ’A%’注:HAVING子句的目的是在结果集被检索出来后再筛选查询,实

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)相类似。

上一页  1 2 3 4 5 6 7  下一页

Tags:深入 了解 SQL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接