• 昨天研究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 
  • 相关阅读:
    如何设置eclipse默认打开文件方式
    CalendarUtil.java
    排班管理
    jquery ajax 发送邮件例子
    C# 打开文件夹和保存文件夹
    C# QQ邮箱授权码发送邮件
    IIS7 http自动跳转到https
    C# 关键字替换
    C# webBrowser 控件赋值
    C# Post提交数据
  • 原文地址:https://www.cnblogs.com/HaiHong/p/8967995.html
Copyright © 2020-2023  润新知