zoukankan      html  css  js  c++  java
  • 昨天研究sql优化,从需要4分钟优化到不到1秒,倒腾到晚上12点多,不敢私存,贴出来大家共享一下

    昨天研究sql优化,从需要4分钟优化到不到1秒,倒腾到晚上12点多,不敢私存,贴出来大家共享一下:

     1 ---------------------------写法一:下面的脚本执行了4分02秒---------------------------------
     2 select shoufei.sYuYue, 
     3         shoufei.sCheType, shoufei.sCheID, shoufei.sCheZhu, shoufei.sPhone as sChePhone, 
     4         max(shoufei.dDate) as dShoufei, 
     5         min((case when shouFei.lRed=1 then -1 else 1 end)* 1) as nCount, 
     6         sum((case when shouFei.lRed=1 then -1 else 1 end)* shoufeiList.nMoney) as nListMoney, 
     7         sum((case when shouFei.lRed=1 then -1 else 1 end)* 
     8             (shoufeiList.nEmpBonus + shoufeiList.nMoney*shoufeiList.nEmpRate) ) as nEmpBonus
     9         /*sum( (case when shouFei.lRed=1 then -1 else 1 end) * 
    10              isNull( select sum(nEmpBonus + nMoney*nEmpRate) as nEmpBonus from vShouFeiList as list where sID=shoufei.sID), 0) 
    11             ) as nEmpBonus */
    12     from ShouFei /*vShouFei*/ as shoufei 
    13         inner join ShouFeiList as shoufeiList on shoufei.sID=shoufeilist.sID 
    14     where shoufei.sYuYue<>'' 
    15          and (shoufei.dDate>='2018-04-01'  And shoufei.dDate<='2018-04-27 23:59:59')  
    16     group by shoufei.sYuYue, shoufei.sCheType, shoufei.sCheID, shoufei.sCheZhu,shoufei.sPhone 
    17 
    18 
    19 
    20 ---------------------写法二:速度时快时慢,快时用了3秒,慢时用了3分30秒----------------------------
    21 select shoufei.sYuYue, 
    22         shoufei.sCheType, shoufei.sCheID, shoufei.sCheZhu, shoufei.sPhone as sChePhone, 
    23         max(shoufei.dDate) as dShoufei, 
    24         min((case when shouFei.lRed=1 then -1 else 1 end)* 1) as nCount,  
    25         sum((case when shouFei.lRed=1 then -1 else 1 end)* shoufei.nListMoney) as nListMoney, 
    26         sum((case when shouFei.lRed=1 then -1 else 1 end)* shoufeiList.nEmpBonus) as nEmpBonus 
    27         --sum( (case when shouFei.lRed=1 then -1 else 1 end) * 
    28         --     isNull( (select sum(nEmpBonus + nMoney*nEmpRate) as nEmpBonus from vShouFeiList as list where sID=shoufei.sID), 0) 
    29         --    ) as nEmpBonus 
    30         --    isNull(
    31         --        (select sum((case when shouFei.lRed=1 then -1 else 1 end) * (nEmpBonus + nMoney*nEmpRate)) as nEmpBonus 
    32         --        from vShouFeiList as list where sID=shoufei.sID), 0) as nEmpBonus 
    33     from ShouFei /*vShouFei*/ as shoufei 
    34         inner join (
    35             select sID, sum(nEmpBonus + nMoney*nEmpRate) as nEmpBonus from ShouFeiList group by sID 
    36         ) as shoufeiList on shoufei.sID=shoufeiList.sID 
    37     where 1=1 
    38         and shoufei.sYuYue<>'' 
    39         and (shoufei.dDate>='2018-04-01'  And shoufei.dDate<='2018-04-27 23:59:59')  
    40     group by shoufei.sYuYue,  shoufei.sCheType, shoufei.sCheID, shoufei.sCheZhu,shoufei.sPhone 
    41 
    42 
    43 
    44 
    45 --------------------------------写法三:脚本执行了不到1秒---------------------------------------------
    46 select shoufei.sYuYue, 
    47         shoufei.sCheType, shoufei.sCheID, shoufei.sCheZhu, shoufei.sPhone as sChePhone, 
    48         max(shoufei.dDate) as dShoufei, 
    49         min((case when shouFei.lRed=1 then -1 else 1 end)* 1) as nCount,  
    50         sum((case when shouFei.lRed=1 then -1 else 1 end)* shoufei.nListMoney) as nListMoney, 
    51         sum((case when shouFei.lRed=1 then -1 else 1 end)* shoufeiList.nEmpBonus) as nEmpBonus 
    52         --sum( (case when shouFei.lRed=1 then -1 else 1 end) * 
    53         --     isNull( (select sum(nEmpBonus + nMoney*nEmpRate) as nEmpBonus from vShouFeiList as list where sID=shoufei.sID), 0) 
    54         --    ) as nEmpBonus 
    55         --    isNull(
    56         --        (select sum((case when shouFei.lRed=1 then -1 else 1 end) * (nEmpBonus + nMoney*nEmpRate)) as nEmpBonus 
    57         --        from vShouFeiList as list where sID=shoufei.sID), 0) as nEmpBonus 
    58     from ShouFei /*vShouFei*/ as shoufei 
    59         inner join (
    60             select shoufeilist.sID, sum(nEmpBonus + shoufeilist.nMoney*nEmpRate) as nEmpBonus from ShouFeiList inner join ShouFei on shoufei.sID=shoufeilist.sID
    61                 where shoufei.sYuYue<>'' and (shoufei.dDate>='2018-04-01'  And shoufei.dDate<='2018-04-27 23:59:59')  
    62                 group by shoufeilist.sID
    63         ) as shoufeiList on shoufei.sID=shoufeiList.sID 
    64     where 1=1 
    65         --    and shoufei.sYuYue<>'' 
    66         --    and (shoufei.dDate>='2018-04-01'  And shoufei.dDate<='2018-04-27 23:59:59')  
    67     group by shoufei.sYuYue,  shoufei.sCheType, shoufei.sCheID, shoufei.sCheZhu,shoufei.sPhone 
  • 相关阅读:
    深入理解DOM事件类型系列第四篇——剪贴板事件
    深入理解DOM事件机制系列第四篇——事件模拟
    利用select实现年月日三级联动的日期选择效果
    深入理解表单脚本系列第四篇——选择框脚本
    存储过程返回布尔值以及C#相关处理
    Type 'Insus.NET.PictureObject' in Assembly 'App_Code, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.
    打开Windows10网络发现或是文件打印共享
    反射(Reflection)的SetValue遇上DBNULL转换为string
    MS SQL中使用UPDATE ... INNER JOIN ...
    Visual Studio 2015正式企业(Enterprise)版
  • 原文地址:https://www.cnblogs.com/HaiHong/p/8967995.html
Copyright © 2011-2022 走看看