sql server 表别名性能低 临时表性能高

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-02 03:30 点击:

 

看以下例子:

 

 

 

 

Java代码 

   select * from   

( select * from b left join c on xx=xx left join d on xx=xx left join e on xx=xx)  

as a  where a.xx=xx 

 

   select * from

( select * from b left join c on xx=xx left join d on xx=xx left join e on xx=xx)

as a  where a.xx=xx 

由于a是一个很复杂的东西,关键a是别名出来的。

 

那这种写法将会非常耗时。

 

 

 

但是如果将select * from b left join c on xx=xx left join d on xx=xx left join e on xx=xx放进一个临时表,再从临时表中加入where a.xx=xx,性能将提高的非常明显。

 

写法如下:

 

 

Java代码 

select * from b left join c on xx=xx left join d on xx=xx left join e on xx=xx into #tmpTable 

 

select * from b left join c on xx=xx left join d on xx=xx left join e on xx=xx into #tmpTable 

因为临时表用过后要删除,所以考虑可以将整个过程放在一个存储过程里,如下:

 

 

 

 

Sql代码 

写了一个存储过程对视图进行分页查询,但数据增多后发现基效率低得要命,三万多条数据要查询一个半小时都没出来,这不是要了命,于是想到了索引,应用过后仍无济于事。最后对sql进行分析和实践中得出,使用临时表可以大大加快视图的查询速度,见如下sql语句   

性能超低的视图分页sql语句:  

select top 100 * from   

view_customerPayDetails where   

( 1=1) and (payId not in 

(select top 100 payId from   

view_customerPayDetails where   

( 1=1) order by payId desc))order by payId desc 

使用临时表提升性能的sql语句:  

select top 100 payId into #tmpTable   

from view_customerPayDetails  

order by payId desc 

select top 100 * from view_customerPayDetails   

where  payId not in (select payId from #tmpTable )   

order by payId desc 

drop table #tmpTable ...... 

 

写了一个存储过程对视图进行分页查询,但数据增多后发现基效率低得要命,三万多条数据要查询一个半小时都没出来,这不是要了命,于是想到了索引,应用过后仍无济于事。最后对sql进行分析和实践中得出,使用临时表可以大大加快视图的查询速度,见如下sql语句

性能超低的视图分页sql语句:

select top 100 * from

view_customerPayDetails where

( 1=1) and (payId not in

(select top 100 payId from

view_customerPayDetails where

( 1=1) order by payId desc))order by payId desc

使用临时表提升性能的sql语句:

select top 100 payId into #tmpTable

from view_customerPayDetails

order by payId desc

select top 100 * from view_customerPayDetails

where  payId not in (select payId from #tmpTable )

order by payId desc

drop table #tmpTable ...... 

 

 

 

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • sql常见面试题
      • SQL SERVER 2005性能之跟踪
      • SQL编程(一)
      • LINUX上RMAN自动备份脚本
      • sql server面试题
      • 如何将多个SQL查询统计结果一次显示出来
      • 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色
      • SQL小技巧系列 --- 行转列合并
      • sql server 列转行
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1