这条SQL语句修改后竟然快了几百倍

    今天我用到了这样一组SQL语句,它所执行的表中有130万数据,

SELECT  COUNT(a.A0100) AS zzPsnNum, SUM(isnull(a.A5830,0)) AS ZzNums, Gz_Tz_B001.B0105 as DwName, Gz_Tz_B001.B0110 as B0110
FROM   (

 SELECT A0100, B0110,CurrWageMonth,A5830 FROM  Gz_Tz_Zz 
 UNION
 SELECT A0100, B0110,CurrWageMonth, A6808 AS A5830 FROM  Gz_Tz_Dgry  
 ) AS a
  RIGHT OUTER JOIN Gz_Tz_B001 ON a.B0110 = Gz_Tz_B001.B0110 AND a.CurrWageMonth = Gz_Tz_B001.currWageMonth
 WHERE  (Gz_Tz_B001.CurrWageMonth = '200806' And Gz_Tz_B001.B0110 like '037%'  And Gz_Tz_B001.Codeid='UN' AND (Gz_Tz_B001.B0143 = '1') )

 GROUP BY Gz_Tz_B001.B0110, Gz_Tz_B001.B0105,Gz_Tz_B001.OrderIDjg
 ORDER BY Gz_Tz_B001.OrderIDJg

执行完上面这条语句用了24分钟。

 

我把SQL语句加了条件,修改成下面这样后,速度竟然快了 几百倍


SELECT  COUNT(a.A0100) AS zzPsnNum, SUM(isnull(a.A5830,0)) AS ZzNums, Gz_Tz_B001.B0105 as DwName, Gz_Tz_B001.B0110 as B0110
FROM   (

 SELECT A0100, B0110,CurrWageMonth,A5830 FROM  Gz_Tz_Zz  where CurrWageMonth = '200806'
 UNION
 SELECT A0100, B0110,CurrWageMonth, A6808 AS A5830 FROM  Gz_Tz_Dgry  where CurrWageMonth = '200806'
 
 ) AS a
  RIGHT OUTER JOIN Gz_Tz_B001 ON a.B0110 = Gz_Tz_B001.B0110 AND a.CurrWageMonth = Gz_Tz_B001.currWageMonth
 WHERE  (Gz_Tz_B001.CurrWageMonth = '200806' And Gz_Tz_B001.B0110 like '037%'  And Gz_Tz_B001.Codeid='UN' AND (Gz_Tz_B001.B0143 = '1') )

 GROUP BY Gz_Tz_B001.B0110, Gz_Tz_B001.B0105,Gz_Tz_B001.OrderIDjg
 ORDER BY Gz_Tz_B001.OrderIDJg

其实就是让连接的左部分数据减少了,但是两条语句执行的结果一样的。

 

 
[收藏] [返回顶部] [打印本页] [关闭窗口]  
 
 
 
 相关主题:  
 
SQL 快速删除表中大量数据的方法
sqlserver中动态sql语句应用
数据库查询中的特殊字符的问题
 
 网友评论:
正在加载……
 
*评论者:
主页:
标题:
*内容:
【声明】 地球黑匣子网刊载的资讯及其他内容均由网友提供分享 并且纯属作者个人观点,不表示地球黑匣子网同意其说法或描述,仅为提供更多信息,也不构成任何建议。网友转载请注明原作者姓名及出处。如有侵犯到您的版权,请与我们联系,我们会马上进行重新整理!
最新日志列表
人气主题
 
 
 
 
声明:本网站部分内容属网民发布和来自于互联网。对于引用、发布、转载和放置的内容(广告、链接、文字、图像或声音),所产生的所有法律责任,都将由信息归属者或者广告厂商提供者承担,并且由此产生的版权、署名权的异议、纠纷,本网站概不承担任何责任,本站转载素材仅供大家欣赏和分享,切勿做为商业目的使用。
 
Copyright © 地球黑匣子网 2007.06 - 2009   Email:dqhxzcom@163.com
鲁ICP备07501416号   QQ:254212580 网站管理