亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

通過調整表union all的順序優化SQL

2024-07-21 02:48:32
字體:
來源:轉載
供稿:網友
通過調整表union all的順序優化SQL

  操作系統:Windows xp

  數據庫版本:SQL Server 2005

  今天遇到一個SQL,過濾條件是自動生成的,因此,沒法通過調整SQL的謂詞達到優化的目的,只能去找SQL中的“大表”。有一個視圖返回的結果集比較大,如果能調整的話,也只能調整該視圖了。

  看了一下該視圖的結構,里面還套用了另一層視圖,直接看最里層視圖的查詢SQL。

SELECT  a.dfeesum_no ,        a.oPR_amt - ISNULL(b.dec_pay, 0) - ISNULL(b.dec_corrpay, 0)        - ISNULL(b.dec_deduamt, 0) dec_amt ,        a.dec_camt - ISNULL(b.dec_pay, 0) - a.dec_comprate        * ISNULL(b.dec_deduamt, 0) dec_compamt ,        a.dec_ramt - ISNULL(b.dec_corrpay, 0) - ( a.dec_comprate - 1 )        * ISNULL(b.dec_deduamt, 0) dec_corramt ,        a.dec_qty - ISNULL(b.dec_qty, 0) - ISNULL(b.dec_deduqty, 0) opr_qty ,        ISNULL(b.dec_pay, 0) dec_pay ,        ISNULL(b.dec_corrpay, 0) dec_corrpay ,        ISNULL(b.dec_deduqty, 0) dec_deduqty ,        ISNULL(b.dec_deduamt, 0) dec_deduamt ,        ISNULL(b.dec_qty, 0) dec_qtyFROM    ctlm8686 a        LEFT JOIN ( SELECT  dfeesum_no ,                            SUM(dec_ramt) dec_pay ,                            SUM(dec_corramt) dec_corrpay ,                            SUM(dec_qty) dec_qty ,                            SUM(CASE WHEN flag_dedu = '1' THEN dec_deduamt                                     ELSE 0                                END) dec_deduamt ,                            SUM(CASE WHEN flag_dedu = '1' THEN dec_deduqty                                     ELSE 0                                END) dec_deduqty                    FROM    dfeepay_03                    GROUP BY dfeesum_no                  ) b ON a.dfeesum_no = b.dfeesum_noUNION ALLSELECT  a.dfeesum_no ,        a.dec_amt - ISNULL(b.dec_pay, 0) - ISNULL(b.dec_corrpay, 0)        - ISNULL(b.dec_deduamt, 0) dec_amt ,        a.dec_compamt - ISNULL(b.dec_pay, 0) - a.dec_comprate        * ISNULL(b.dec_deduamt, 0) dec_compamt ,        a.dec_corramt - ISNULL(b.dec_corrpay, 0) - ( a.dec_comprate - 1 )        * ISNULL(b.dec_deduamt, 0) dec_corramt ,        a.opr_qty - ISNULL(b.dec_qty, 0) - ISNULL(b.dec_deduqty, 0) opr_qty ,        ISNULL(b.dec_pay, 0) dec_pay ,        ISNULL(b.dec_corrpay, 0) dec_corrpay ,        ISNULL(b.dec_deduqty, 0) dec_deduqty ,        ISNULL(b.dec_deduamt, 0) dec_deduamt ,        ISNULL(b.dec_qty, 0) dec_qtyFROM    dfeeapp_03 a        LEFT JOIN ( SELECT  dfeesum_no ,                            SUM(dec_ramt) dec_pay ,                            SUM(dec_corramt) dec_corrpay ,                            SUM(dec_qty) dec_qty ,                            SUM(CASE WHEN flag_dedu = '1' THEN dec_deduamt                                     ELSE 0                                END) dec_deduamt ,                            SUM(CASE WHEN flag_dedu = '1' THEN dec_deduqty                                     ELSE 0                                END) dec_deduqty                    FROM    dfeepay_03                    GROUP BY dfeesum_no                  ) b ON a.dfeesum_no = b.dfeesum_no

  返回結果集有1433891行,其中

  SELECT COUNT(*) FROM dfeepay_03 --1103914  SELECT COUNT(*) FROM ctlm8686 --1131586  SELECT COUNT(*) FROM dfeeapp_03--302305

  上述SQL腳本中,子查詢是相同的,即對子查詢進行了兩次掃描,可以考慮先讓dfeeapp_03和ctlm8686union all,再left joindfeepay_03 。同時,對于子查詢,先讓dfeepay_03 表先查詢出flag_dedu = '1'的數據,就不用再進行case when判斷了。

  改寫后的SQL如下

SELECT  a.dfeesum_no ,        a.opr_amt - ISNULL(b.dec_pay, 0) - ISNULL(b.dec_corrpay, 0)        - ISNULL(b.dec_deduamt, 0) dec_amt ,        a.dec_camt - ISNULL(b.dec_pay, 0) - a.dec_comprate        * ISNULL(b.dec_deduamt, 0) dec_compamt ,        a.dec_ramt - ISNULL(b.dec_corrpay, 0) - ( a.dec_comprate - 1 )        * ISNULL(b.dec_deduamt, 0) dec_corramt ,        a.dec_qty - ISNULL(b.dec_qty, 0) - ISNULL(b.dec_deduqty, 0) opr_qty ,        ISNULL(b.dec_pay, 0) dec_pay ,        ISNULL(b.dec_corrpay, 0) dec_corrpay ,        ISNULL(b.dec_deduqty, 0) dec_deduqty ,        ISNULL(b.dec_deduamt, 0) dec_deduamt ,        ISNULL(b.dec_qty, 0) dec_qtyFROM    ( SELECT    a.dfeesum_no ,                    a.opr_amt ,                    a.dec_camt ,                    a.dec_comprate ,                    a.dec_ramt ,                    a.dec_qty          FROM      ctlm8686 a          UNION ALL          SELECT    a.dfeesum_no ,                    a.dec_amt ,                    a.dec_compamt ,                    a.dec_comprate ,                    a.dec_corramt ,                    a.opr_qty          FROM      dfeeapp_03 a        ) a        LEFT JOIN ( SELECT  dfeesum_no ,                            SUM(dec_ramt) dec_pay ,                            SUM(dec_corramt) dec_corrpay ,                            SUM(dec_qty) dec_qty ,                            SUM(dec_deduamt) dec_deduamt,                            SUM(dec_deduqty) dec_deduqty                    FROM   dfeepay_03                    WHERE flag_dedu = '1'                    GROUP BY dfeesum_no                  ) b ON a.dfeesum_no = b.dfeesum_no                

  跑這個視圖的查詢語句,從原來的一分半鐘降到一分鐘,對于整個SQL而言,則從原來跑幾分鐘的直接10S出結果。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品69精品一区二区三区| 亚洲二区中文字幕| 国产精品视频xxxx| 裸体女人亚洲精品一区| 精品久久中文字幕| 亚洲精品国产精品自产a区红杏吧| 夜夜嗨av色综合久久久综合网| 精品国产一区二区三区久久| 91麻豆国产语对白在线观看| 日本精品免费一区二区三区| 国产一区二中文字幕在线看| 亚洲一区二区三区在线免费观看| 国产亚洲一区精品| 国产综合在线视频| 久久久免费在线观看| 国产精品电影一区| 亚洲精品久久视频| 97av在线播放| 国产精品亚洲片夜色在线| 96国产粉嫩美女| 亚洲另类激情图| 久久深夜福利免费观看| 国产精品99免视看9| 日韩国产欧美精品一区二区三区| 亚洲欧美福利视频| 欧美性xxxx极品高清hd直播| 亚洲国产高潮在线观看| 久久精品电影一区二区| 日韩最新免费不卡| 免费不卡在线观看av| 91av视频在线观看| 精品电影在线观看| 色综合视频一区中文字幕| 91九色视频导航| 国产亚洲精品美女久久久| 91亚洲永久免费精品| 欧美亚洲第一页| 亚洲成av人乱码色午夜| 91视频免费在线| 亚洲石原莉奈一区二区在线观看| 国产不卡在线观看| 日韩国产欧美区| 欧美激情在线观看视频| 亚洲精品视频网上网址在线观看| 日韩国产欧美精品一区二区三区| 亚洲男人天堂久| 国产精品丝袜久久久久久高清| 国产91亚洲精品| 亚洲视频在线观看网站| 午夜精品一区二区三区在线播放| 欧美最猛性xxxxx免费| 国产精品老牛影院在线观看| 欧美色播在线播放| 亚洲人高潮女人毛茸茸| 上原亚衣av一区二区三区| 欧美成人性生活| 亚洲人成网站在线播| 日韩美女免费视频| 亚洲黄色www网站| 欧美日韩中国免费专区在线看| 久久久久久久久久国产精品| 黄色成人在线播放| 国产精品午夜一区二区欲梦| 欧美老少做受xxxx高潮| 欧美成人精品一区| 久色乳综合思思在线视频| 久久久久久av| 国产精品入口夜色视频大尺度| 精品视频在线播放免| 日韩欧美一区二区三区| 亚洲一区二区三区乱码aⅴ| 欧美一级片免费在线| 国产亚洲精品美女久久久久| 91av在线不卡| 欧美激情精品在线| 亚洲美女性生活视频| 97在线免费观看| 国产亚洲视频在线观看| 欧美日韩另类视频| 日韩在线精品视频| 激情成人中文字幕| 久久精品国产欧美亚洲人人爽| 精品日本美女福利在线观看| 黄色成人在线播放| 欧美成人免费va影院高清| 国产精品国内视频| 日韩电影在线观看免费| 国产成人精品视频在线观看| 伊人久久五月天| 91久久精品美女| 疯狂蹂躏欧美一区二区精品| 国产乱人伦真实精品视频| 久久av资源网站| 国产精品激情自拍| 亚洲精品网站在线播放gif| 一本色道久久综合亚洲精品小说| 国产欧美精品va在线观看| 最新亚洲国产精品| 日韩中文字幕免费| 精品日韩美女的视频高清| 欧美野外wwwxxx| 国产精品免费视频xxxx| 亚洲在线第一页| 精品国产依人香蕉在线精品| 日韩高清有码在线| 日韩视频免费在线观看| 亚洲成人黄色在线观看| 亚洲国产精品久久久久| 精品美女久久久久久免费| 亚洲精品影视在线观看| 成人久久一区二区三区| 91av国产在线| 成人免费直播live| 欧美视频国产精品| 亚洲国产97在线精品一区| 久久久999国产| 一区二区三区国产视频| 国产日韩综合一区二区性色av| 正在播放国产一区| 欧美电影在线观看高清| 亚洲视频免费一区| 欧美黄色免费网站| 亚洲国产免费av| 亚洲欧美福利视频| 青青草99啪国产免费| 欧美黑人国产人伦爽爽爽| 亚洲福利影片在线| 欧美日韩亚洲精品一区二区三区| 性欧美xxxx交| 在线观看日韩www视频免费| 成人黄色av免费在线观看| 久久国产视频网站| 久久精品国产亚洲一区二区| 亚洲欧美中文字幕在线一区| 欧美日韩一区二区免费在线观看| 亚洲第一页在线| 国产精品美女主播在线观看纯欲| 欧美亚洲另类制服自拍| 久久躁狠狠躁夜夜爽| 不卡av电影在线观看| 亚洲自拍偷拍在线| 欧美日韩黄色大片| 91在线高清免费观看| 97婷婷涩涩精品一区| 欧美午夜无遮挡| 久久色在线播放| 欧美性猛交xxxx免费看| 精品久久久久久电影| 精品国产欧美一区二区五十路| 国产日韩精品在线| 国产精品久久久久999| 亚洲男女性事视频| 久久久亚洲福利精品午夜| 日韩中文字幕在线看| 日韩电影中文字幕| 性欧美长视频免费观看不卡| 欧美成人精品三级在线观看| 欧美成人性生活| 高跟丝袜欧美一区| 亚洲精品成人av| 热re91久久精品国99热蜜臀| 91大神福利视频在线| 国产精品高清免费在线观看| 成人有码视频在线播放|