欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

sql優化-提防錯誤關聯

系統 1988 0

? ? 在寫sql時,在多表關聯時,有時候容易把關聯關系寫錯。一般情況下,該問題比較容易發現,但如果sql較長時,光靠眼力就比較難發現了。今天寫了一個腳本,碰到該問題了。

? ? 第一版本的腳本如下:

?

    select detail.commityear,

       detail.commitmonth,

       to_char((sysdate - 1), 'YYYYMM') statmonthid,

       policy.corppkno,

       product.prdtsubcatpkno,

       product.pkno,

       sum(loss_d.losssum) lossSum_FASH,

       sum(claim_d.claimsum) claimSum_FASH,

       sum(indemnity_d.indemnityRptDetail) indemnityRpt_FASH,

       sum(recovery_d.recoverySumDetail) recoveryRpt_FASH

  from F_T_DeclareDetail detail

  join stdw.d_t_policy policy

    on detail.policypkno = policy.pkno

  join stdw.d_t_producttype product

    on policy.policytypepkno = product.pkno

  left join (select t.declaredetailpkno,

                    sum(nvl(t.losssumdetail, 0)) losssum

               from stdw.f_t_lossdetail t

              group by t.declaredetailpkno) loss_d

    on detail.pkno = loss_d.declaredetailpkno

   and loss_d.losssum > 0

  left join (select claim.declaredetailpkno,

                    sum(nvl(claim.claimsumdetail, 0)) claimsum

               from stdw.F_T_ClaimDetail claim

              group by claim.declaredetailpkno) claim_d

    on detail.pkno = claim_d.declaredetailpkno

   and claim_d.claimsum > 0

  left join (select declareDetailPkNo,

                    sum(nvl(indemnityRptDetail, 0)) indemnityRptDetail

               from stdw.F_T_IndemnityDetail

              group by declareDetailPkNo) indemnity_d

    on detail.pkno = indemnity_d.declaredetailpkno

   and indemnity_d.indemnityRptDetail > 0

  left join (select declaredetailpkno,

                    sum(nvl(recoverySumDetail, 0)) recoverySumDetail

               from stdw.F_T_RecoveryDetail

              group by declaredetailpkno) recovery_d

    on 
    
      detail.pkno = indemnity_d.declaredetailpkno
    
    

   and recovery_d.recoverySumDetail > 0

 where product.pkno not in (7, 8, 12, 14, 38) /*有出運*/

   and (loss_d.losssum is not null or claim_d.claimsum is not null or

       indemnity_d.indemnityRptDetail is not null or

       recovery_d.recoverySumDetail is not null) /*剔除沒有報損等信息的數據*/

 group by detail.commityear,

          detail.commitmonth,

          policy.corppkno,

          product.prdtsubcatpkno,

          product.pkno


  

?

執行后,發現半天沒出來數。而且這些表中,數據量最大的表f_t_declaredetail也就幾百萬條,在極致情況下,最多返回幾百萬行數據。查看了下執行計劃,發現執行計劃和預計的不一樣,而且預估的結果集相當大。執行計劃如下:


? ? 根據圖示,可以比較清楚的看到,表f_t_recoverydetail居然與其他的表做了內嵌循環關聯,不可思議啊,而且返回的結果集,遠超百萬數量級,比f_t_declaredetail的數量級還大。起初以為是統計信息出了問題,查看了各表的統計信息,發現沒有什么異常。

? ? 后來靜下來想了想,返回的結果集肯定不會超過f_t_declaredetail的數據量,正好與f_t_recoverydetail關聯時,數據量嗖地上去了,初步懷疑是關聯的問題。可以回頭看下sql代碼,粗字體表明的地方就是問題所在:確實是表之間關聯出了問題。

? ? 總結:有時候肉眼看不出來,就用執行計劃看吧,還是有很大幫助的。呵呵


?

?

sql優化-提防錯誤關聯


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产青青 | 懂色中文一区二区三区在线视频 | 三级毛片免费看 | 91www成人久久| 欧美一性一看一免费视频 | 麻豆国产| 美女操网站 | 草草视频手机在线观看视频 | 亚洲视频中文字幕 | 日韩电影免费观 | 欧美成视频在线观看 | 免费高清精品国偷自产在线 | 嫩草嫩草嫩草 | 国产美女久久 | 日本在线观看 | 亚洲AV久久综合无码东京 | 女人午夜色又刺激黄的视频免费 | 日本一级成人毛片免费观看 | 亚洲一区二区三区四区精品 | a毛片在线看免费观看 | 欧美福利视频一区二区三区 | 欧美日韩在线视频一区 | 成年人在线观看 | 日韩五月天| 精品欧美一区视频在线观看 | 91视频综合网 | 成人激情四射 | 人人爽久久涩噜噜噜蜜桃 | 青青草在线免费视频 | 温如玉二虎大结局1800 | 91p在线观看| 涩涩天堂 | 欧美激情欧美激情在线五月 | 91福利一区二区在线观看 | 国内精品视频区在线2021 | 韩国成人毛片aaa黄 人人天天操 | 日本一区二区视频在线 | 亚洲日本国产 | 午夜色视频在线观看 | 激情se| 精品久久久久区二区8888 |