以下的文章主要描述的是SQL Server 表内容的组合,即 union 提高查询速度的实际操作步骤,以下就是SQL Server 表内容的组合,即 union 提高查询速度的实际操作步骤的描述,希望在你今后的学习中会有所帮助。
创新互联建站,为您提供重庆网站建设公司、网站制作、网站营销推广、网站开发设计,对服务成都搬家公司等多个行业拥有丰富的网站建设及推广经验。创新互联建站网站建设公司成立于2013年,提供专业网站制作报价服务,我们深知市场的竞争激烈,认真对待每位客户,为客户提供赏心悦目的作品。 与客户共同发展进步,是我们永远的责任!
- select ws.nodeid,wi.laststepid,wi.curstepid from Workflowinfo wi,
- Workflowstep ws where ws.workflowid=
- select ws.nodeid,wi.laststepid,wi.curstepid from Workflowinfo wi,
- Workflowstep ws where ws.workflowid=
- '402881db1b441e6f011c0cff320e4766' and (wi.laststepid =
- 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”引起的性能问题,后来根据业务逻辑改写。如下:
语句修改如下:
- select ws.nodeid,wi.laststepid,wi.curstepid from Workflowinfo wi, Workflowstep ws
- where ws.workflowid='402881db1b441e6f011c0cff320e4766' and (wi.laststepid = ws.id)
- union all
- select ws.nodeid,wi.laststepid,wi.curstepid from Workflowinfo wi, Workflowstep
- ws where ws.workflowid='402881db1b441e6f011c0cff320e4766' and
- (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“ 语句。
本文名称:SQLServer表内容的组合的操作模式
URL标题:http://www.mswzjz.com/qtweb/news46/181146.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联