SQL Server 表内容的组合的操作模式

数据库 SQL Server
我们今天主要和大家讲述的是SQL Server 表内容的组合,即 union 提高查询速度的实际操作步骤,以下就是文章的主要内容的详细介绍。

以下的文章主要描述的是SQL Server 表内容的组合,即 union 提高查询速度的实际操作步骤,以下就是SQL Server 表内容的组合,即 union 提高查询速度的实际操作步骤的描述,希望在你今后的学习中会有所帮助。

  1. select ws.nodeid,wi.laststepid,wi.curstepid from Workflowinfo wi,   
  2. Workflowstep ws where ws.workflowid=  
  3. select ws.nodeid,wi.laststepid,wi.curstepid from Workflowinfo wi,   
  4. Workflowstep ws where ws.workflowid=  
  5. '402881db1b441e6f011c0cff320e4766' and (wi.laststepid =  
  6. ws.id or (wi.curstepid = ws.id and isreceived=1 and issubmited =1))   

执行IO统计结果如下:

(22 行受影响)

 

SQL Server 表 'workflowstep'。扫描计数 1,逻辑读取 23 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

 

表 'Worktable'。扫描计数 4,逻辑读取 1490572 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

 

表 'workflowinfo'。扫描计数 4,逻辑读取 12208 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

 

SQL Server 表 'Worktable'。扫描计数 0,逻辑读取 0 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

 

执行计划如下:

 

这里发现:主要是嵌套循环算法占的开销***。个人感觉是“Or”引起的性能问题,后来根据业务逻辑改写。如下:

语句修改如下:

 

  1. select ws.nodeid,wi.laststepid,wi.curstepid from Workflowinfo wi, Workflowstep ws  
  2. where ws.workflowid='402881db1b441e6f011c0cff320e4766' and (wi.laststepid = ws.id)   
  3. union all   
  4. select ws.nodeid,wi.laststepid,wi.curstepid from Workflowinfo wi, Workflowstep  
  5. ws where ws.workflowid='402881db1b441e6f011c0cff320e4766' and   
  6. (wi.curstepid = ws.id and isreceived=1 and issubmited =1

查询IO次数如下:

(22 行受影响)

 

表 'workflowinfo'。扫描计数 36,逻辑读取 142 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

 

SQL Server 表 'workflowstep'。扫描计数 2,逻辑读取 46 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

 

执行计划如下:

 

这里发现:成本不在是嵌套循环上的开销了,IO次数大大减少。

总结:

这里通过改写”OR“语句成“Union”语句,性能大大提高,用了or语句,数据库优化器无法优化,这里都是用的“嵌套循环算法”,但是使用方式不一样,同样得到不同的结果。

 

对于类似的语句,可以将其改写成”Union“ 或”Union All“ 语句。

 

【编辑推荐】

  1. 对SQL Server 2000置疑的正确破解
  2. SQL Server 2008稀疏列与列集的经验总结
  3. SQL Server 2008 FileStream支持“真功夫版”
  4. SQL Server 2005两种快照隔离机制的不同之处
  5. SQL Server排序遇到NULL,不怕不帕!

 

责任编辑:佚名 来源: TechTarget中国
相关推荐

2010-07-12 10:13:44

SQL Server表

2010-07-14 11:35:57

SQL Server修

2010-07-22 16:07:02

SQL Server数

2011-04-07 13:53:04

SQL Server数

2010-09-14 11:36:37

SQL Server系

2010-09-16 14:13:11

SQL Server系

2010-11-10 14:54:24

SQL Server系

2010-10-19 14:45:01

SQL SERVER临

2010-07-26 13:56:38

SQL Server临

2010-10-21 15:13:20

SQL Server系

2010-09-13 10:55:44

SQL Server

2010-07-06 10:19:15

SQL Server层

2010-07-19 18:04:23

SQL Server锁

2011-03-29 13:22:07

SQL Server临时表表变量

2010-07-22 16:02:29

2010-07-08 14:42:34

SQL Server临

2010-10-21 14:43:46

SQL Server查

2010-10-19 15:25:05

Sql Server临

2010-09-16 15:10:48

SQL Server表

2010-07-12 09:52:24

删除 SQL Serv
点赞
收藏

51CTO技术栈公众号