欧美三区_成人在线免费观看视频_欧美极品少妇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條評論
主站蜘蛛池模板: 午夜影网 | 久久香蕉国产精品一区二区三 | 亚洲午夜成激人情在线影院 | 全日本爽视频在线 | 免费国产免费福利视频 | 91免费版在线看 | 色妞妞视频 | 亚洲综合在线另类色区奇米 | 国产亚洲精品看片在线观看 | 免费福利视频在线观看 | 三级在线网站 | 九九99九九视频在线观看 | 欧美精品欧美精品系列 | 狠狠久久| 精品网站999www| 久久国产精品超级碰碰热 | 波多野结衣一级 | 亚洲综合干| 精品日韩在线观看 | 美女用震蛋叫爽的视频95视频 | 国产精品美女久久久久久久久久久 | 一个色综合亚洲伊人久久 | 2021国产精品一区二区在线 | 小视频你懂得 | 日韩福利视频在线 | 人人爽久久涩噜噜噜蜜桃 | 亚洲91精品 | 天天射天天干天天插 | 久草在线视频网 | 欧美一区久久 | 日本黄色不卡视频 | 久久精品免费观看 | 久久亚洲最大成人网4438 | 国产色司机在线视频免费观看 | 一呦二呦三呦国产精品 | 欧美天天视频 | 欧美人妖channelsantini同性 | 男女又黄又刺激B片免费网站 | 嘿咻嘿咻免费区在线观看吃奶 | 欧美日韩一区二区在线 | 色黄网站aaaaaa级毛片 |