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

首頁 > 數據庫 > Oracle > 正文

oracle中使用group by優化distinct

2024-08-29 13:58:33
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了oracle中使用group by優化distinct的相關資料,需要的朋友可以參考下

今天mentor給了一個sql語句優化的任務。(環境是sql developer)有一個語句執行很慢,查詢出來的結果有17544條記錄,但需970秒,速度很慢。語句是這樣的:

 

 
  1. SELECT DISTINCT 'AMEND_NEW',  
  2. reporttitle,  
  3. reportsubtitle,  
  4. cab_cab_transactions.branchcode,  
  5. cab_cab_transactions.prtfo_cd,  
  6. cab_cab_transactions.sstm_scrty_id,  
  7. cab_cab_transactions.sstm_trx_id,  
  8. cab_cab_transactions.trde_dttm,  
  9. cab_cab_transactions.efcte_dttm,  
  10. cab_cab_transactions.due_stlmnt_dt,  
  11. cab_cab_transactions.cncl_efcte_dttm,  
  12. cab_cab_transactions.trde_sstm_id,  
  13. cab_cab_transactions.trx_type_cd,  
  14. cab_cab_transactions.trx_type_dscrn,  
  15. cab_cab_transactions.trx_subtype_cd,  
  16. cab_cab_transactions.trde_stat_flg,  
  17. cab_cab_transactions.csh_cr_dr_indcr,  
  18. cab_cab_transactions.long_shrt_indcr,  
  19. cab_cab_transactions.lcl_crncy,  
  20. cab_cab_transactions.stlmt_crncy,  
  21. cab_cab_transactions.nomin_qty,  
  22. cab_cab_transactions.price,  
  23. cab_cab_transactions.lcl_cst,  
  24. cab_cab_transactions.prtfo_cst,  
  25. cab_cab_transactions.lcl_book_cst,  
  26. cab_cab_transactions.prtfo_book_cst,  
  27. cab_cab_transactions.lcl_sell_prcds,  
  28. cab_cab_transactions.prtfo_sell_prcds,  
  29. cab_cab_transactions.lcl_gnls,  
  30. cab_cab_transactions.prtfo_gnls,  
  31. cab_cab_transactions.lcl_acrd_intrt,  
  32. cab_cab_transactions.prtfo_acrd_intrt,  
  33. cab_cab_transactions.stlmt_crncy_stlmt_amt,  
  34. cab_cab_transactions.lcl_net_amt,  
  35. cab_cab_transactions.prtfo_net_amt,  
  36. cab_cab_transactions.fx_bght_amt,  
  37. cab_cab_transactions.fx_sold_amt,  
  38. cab_cab_transactions.prtfo_crncy_stlmt_amt,  
  39. cab_cab_transactions.prtfo_net_incme,  
  40. cab_cab_transactions.dvnd_crncy_net_incme,  
  41. cab_cab_transactions.dvnd_type_cd,  
  42. cab_cab_transactions.lcl_intrt_pd_rec,  
  43. cab_cab_transactions.prtfo_intrt_pd_rec,  
  44. cab_cab_transactions.lcl_dvdnd_pd_rec,  
  45. cab_cab_transactions.prtfo_dvdnd_pd_rec,  
  46. cab_cab_transactions.lcl_sundry_inc_pd_rec,  
  47. cab_cab_transactions.prtfo_sundry_inc_pd_rec,  
  48. cab_cab_transactions.bnk_csh_cptl_secid,  
  49. cab_cab_transactions.bnk_csh_inc_secid,  
  50. cab_cab_transactions.reportdate,  
  51. cab_cab_transactions.filename,  
  52. sysdate,  
  53. 'e483448' 
  54. FROM cab_cfg_trx_type_mapping RIGHT JOIN(cab_cab_tran_adjustments  
  55. INNER JOIN cab_cab_transactions ON(cab_cab_transactions.branchcode = cab_cab_tran_adjustments.branchcode )  
  56. AND(cab_cab_tran_adjustments.sstm_trx_id = cab_cab_transactions.sstm_trx_id)) ON(cab_cfg_trx_type_mapping.cab_trx_type_cd = cab_cab_transactions.trx_type_cd)  
  57. AND(nvl(cab_cfg_trx_type_mapping.cab_trx_subtype_cd,' ') = nvl(cab_cab_transactions.trx_subtype_cd,' ')  
  58. AND (cab_cfg_trx_type_mapping.branchcode=cab_cab_transactions.branchcode))  
  59. WHERE cab_cab_transactions.prtfo_cd IN 
  60. (SELECT DISTINCT prtfo_cd  
  61. FROM cab_cab_valuations_working  
  62. WHERE created_by = 'e483448' 
  63. AND branchcode='ISA')  
  64. AND cab_cab_tran_adjustments.efcte_dttm > '2011-07-31' 
  65. AND cab_cab_tran_adjustments.efcte_dttm <= '2011-08-31' 
  66. AND eff_trde_stat_flg <> 'X' 
  67. AND cab_cab_transactions.branchcode = 'ISA' 
  68. AND cab_cab_tran_adjustments.branchcode = 'ISA' 
  69. AND(cab_cfg_trx_type_mapping.cab_reportgroup = 'CABValuation' OR cab_cfg_trx_type_mapping.cab_reportgroup IS NULL) 

問題在distinct上面,它會導致對全表掃描,而且會導致排序,然后刪除重復的記錄,所以速度很慢,因此需要優化distinct。查了不少資料,并逐一嘗試,最后發現了一個非??捎^的優化結果,用group by。語句如下:

 

 
  1. SELECT 'AMEND_NEW',  
  2. reporttitle,  
  3. reportsubtitle,  
  4. cab_cab_transactions.branchcode,  
  5. cab_cab_transactions.prtfo_cd,  
  6. cab_cab_transactions.sstm_scrty_id,  
  7. cab_cab_transactions.sstm_trx_id,  
  8. cab_cab_transactions.trde_dttm,  
  9. cab_cab_transactions.efcte_dttm,  
  10. cab_cab_transactions.due_stlmnt_dt,  
  11. cab_cab_transactions.cncl_efcte_dttm,  
  12. cab_cab_transactions.trde_sstm_id,  
  13. cab_cab_transactions.trx_type_cd,  
  14. cab_cab_transactions.trx_type_dscrn,  
  15. cab_cab_transactions.trx_subtype_cd,  
  16. cab_cab_transactions.trde_stat_flg,  
  17. cab_cab_transactions.csh_cr_dr_indcr,  
  18. cab_cab_transactions.long_shrt_indcr,  
  19. cab_cab_transactions.lcl_crncy,  
  20. cab_cab_transactions.stlmt_crncy,  
  21. cab_cab_transactions.nomin_qty,  
  22. cab_cab_transactions.price,  
  23. cab_cab_transactions.lcl_cst,  
  24. cab_cab_transactions.prtfo_cst,  
  25. cab_cab_transactions.lcl_book_cst,  
  26. cab_cab_transactions.prtfo_book_cst,  
  27. cab_cab_transactions.lcl_sell_prcds,  
  28. cab_cab_transactions.prtfo_sell_prcds,  
  29. cab_cab_transactions.lcl_gnls,  
  30. cab_cab_transactions.prtfo_gnls,  
  31. cab_cab_transactions.lcl_acrd_intrt,  
  32. cab_cab_transactions.prtfo_acrd_intrt,  
  33. cab_cab_transactions.stlmt_crncy_stlmt_amt,  
  34. cab_cab_transactions.lcl_net_amt,  
  35. cab_cab_transactions.prtfo_net_amt,  
  36. cab_cab_transactions.fx_bght_amt,  
  37. cab_cab_transactions.fx_sold_amt,  
  38. cab_cab_transactions.prtfo_crncy_stlmt_amt,  
  39. cab_cab_transactions.prtfo_net_incme,  
  40. cab_cab_transactions.dvnd_crncy_net_incme,  
  41. cab_cab_transactions.dvnd_type_cd,  
  42. cab_cab_transactions.lcl_intrt_pd_rec,  
  43. cab_cab_transactions.prtfo_intrt_pd_rec,  
  44. cab_cab_transactions.lcl_dvdnd_pd_rec,  
  45. cab_cab_transactions.prtfo_dvdnd_pd_rec,  
  46. cab_cab_transactions.lcl_sundry_inc_pd_rec,  
  47. cab_cab_transactions.prtfo_sundry_inc_pd_rec,  
  48. cab_cab_transactions.bnk_csh_cptl_secid,  
  49. cab_cab_transactions.bnk_csh_inc_secid,  
  50. cab_cab_transactions.reportdate,  
  51. cab_cab_transactions.filename,  
  52. sysdate,  
  53. 'e483448' 
  54. FROM cab_cfg_trx_type_mapping RIGHT JOIN(cab_cab_tran_adjustments  
  55. INNER JOIN cab_cab_transactions ON(cab_cab_transactions.branchcode = cab_cab_tran_adjustments.branchcode )  
  56. AND(cab_cab_tran_adjustments.sstm_trx_id = cab_cab_transactions.sstm_trx_id)) ON(cab_cfg_trx_type_mapping.cab_trx_type_cd = cab_cab_transactions.trx_type_cd)  
  57. AND(nvl(cab_cfg_trx_type_mapping.cab_trx_subtype_cd,' ') = nvl(cab_cab_transactions.trx_subtype_cd,' ')  
  58. AND (cab_cfg_trx_type_mapping.branchcode=cab_cab_transactions.branchcode))  
  59. WHERE cab_cab_transactions.prtfo_cd IN 
  60. (SELECT DISTINCT prtfo_cd  
  61. FROM cab_cab_valuations_working  
  62. WHERE created_by = 'e483448' 
  63. AND branchcode='ISA')  
  64. AND cab_cab_tran_adjustments.efcte_dttm > '2011-07-31' 
  65. AND cab_cab_tran_adjustments.efcte_dttm <= '2011-08-31' 
  66. AND eff_trde_stat_flg <> 'X' 
  67. AND cab_cab_transactions.branchcode = 'ISA' 
  68. AND cab_cab_tran_adjustments.branchcode = 'ISA' 
  69. AND(cab_cfg_trx_type_mapping.cab_reportgroup = 'CABValuation' OR cab_cfg_trx_type_mapping.cab_reportgroup IS NULL)  
  70. GROUP BY reporttitle,  
  71. reportsubtitle,  
  72. cab_cab_transactions.branchcode,  
  73. cab_cab_transactions.prtfo_cd,  
  74. cab_cab_transactions.sstm_scrty_id,  
  75. cab_cab_transactions.sstm_trx_id,  
  76. cab_cab_transactions.trde_dttm,  
  77. cab_cab_transactions.efcte_dttm,  
  78. cab_cab_transactions.due_stlmnt_dt,  
  79. cab_cab_transactions.cncl_efcte_dttm,  
  80. cab_cab_transactions.trde_sstm_id,  
  81. cab_cab_transactions.trx_type_cd,  
  82. cab_cab_transactions.trx_type_dscrn,  
  83. cab_cab_transactions.trx_subtype_cd,  
  84. cab_cab_transactions.trde_stat_flg,  
  85. cab_cab_transactions.csh_cr_dr_indcr,  
  86. cab_cab_transactions.long_shrt_indcr,  
  87. cab_cab_transactions.lcl_crncy,  
  88. cab_cab_transactions.stlmt_crncy,  
  89. cab_cab_transactions.nomin_qty,  
  90. cab_cab_transactions.price,  
  91. cab_cab_transactions.lcl_cst,  
  92. cab_cab_transactions.prtfo_cst,  
  93. cab_cab_transactions.lcl_book_cst,  
  94. cab_cab_transactions.prtfo_book_cst,  
  95. cab_cab_transactions.lcl_sell_prcds,  
  96. cab_cab_transactions.prtfo_sell_prcds,  
  97. cab_cab_transactions.lcl_gnls,  
  98. cab_cab_transactions.prtfo_gnls,  
  99. cab_cab_transactions.lcl_acrd_intrt,  
  100. cab_cab_transactions.prtfo_acrd_intrt,  
  101. cab_cab_transactions.stlmt_crncy_stlmt_amt,  
  102. cab_cab_transactions.lcl_net_amt,  
  103. cab_cab_transactions.prtfo_net_amt,  
  104. cab_cab_transactions.fx_bght_amt,  
  105. cab_cab_transactions.fx_sold_amt,  
  106. cab_cab_transactions.prtfo_crncy_stlmt_amt,  
  107. cab_cab_transactions.prtfo_net_incme,  
  108. cab_cab_transactions.dvnd_crncy_net_incme,  
  109. cab_cab_transactions.dvnd_type_cd,  
  110. cab_cab_transactions.lcl_intrt_pd_rec,  
  111. cab_cab_transactions.prtfo_intrt_pd_rec,  
  112. cab_cab_transactions.lcl_dvdnd_pd_rec,  
  113. cab_cab_transactions.prtfo_dvdnd_pd_rec,  
  114. cab_cab_transactions.lcl_sundry_inc_pd_rec,  
  115. cab_cab_transactions.prtfo_sundry_inc_pd_rec,  
  116. cab_cab_transactions.bnk_csh_cptl_secid,  
  117. cab_cab_transactions.bnk_csh_inc_secid,  
  118. cab_cab_transactions.reportdate,  
  119. cab_cab_transactions.filename 

最后執行時間只有15.1秒,快了60多倍,不得不說這優化效果還是很可觀的。不過查了很多資料,仍然沒有發現合理地解釋:為什么distinct 和group by的效率會有這么大差別。查的很多資料,講的基本都是兩者相差不大,實現也差不多。有待解決。

DISTINCT和GROUP BY這兩者本質上應該沒有可比性,distinct 取出唯一列,group by 是分組,但有時候在優化的時候,在沒有聚合函數的時候,他們查出來的結果也一樣。


注:相關教程知識閱讀請移步到oracle教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品国产91久久久久| 亚洲精品黄网在线观看| 亚洲精品乱码久久久久久金桔影视| 国模gogo一区二区大胆私拍| 亚洲精品免费网站| 欧美寡妇偷汉性猛交| 日韩精品极品毛片系列视频| 在线观看免费高清视频97| 精品视频久久久| 国产精品wwwwww| www.美女亚洲精品| 国产视频自拍一区| 国产成人亚洲精品| 亚洲片国产一区一级在线观看| 久久在线观看视频| 精品视频久久久| 国产69精品久久久久久| 亚洲国产精品久久91精品| 中文字幕亚洲欧美日韩在线不卡| 国产精品免费电影| 欧美亚洲第一页| 国产综合福利在线| 日韩大陆毛片av| 欧美最近摘花xxxx摘花| 国外成人在线直播| 97在线精品国自产拍中文| 91精品久久久久久| 亚洲第一精品夜夜躁人人躁| 亚洲美女精品成人在线视频| 亚洲国产精品字幕| 97成人精品视频在线观看| 国产日韩欧美在线视频观看| 成人写真福利网| 国产精品亚洲自拍| 欧美视频在线观看免费| 97国产精品视频| 亚洲综合日韩在线| 欧美二区乱c黑人| 国产午夜精品视频免费不卡69堂| 日韩精品免费在线播放| 中文字幕日韩高清| 久久久久久久久久久成人| 亚洲最大在线视频| 91精品国产自产91精品| 亚洲国产精品人久久电影| 久久99国产综合精品女同| 亚洲欧美激情四射在线日| 国产亚洲欧美一区| 国产精品精品视频一区二区三区| 国产成人精品一区二区在线| 久久91精品国产91久久久| 日韩av一区二区在线| 欧美性生交大片免网| 亚洲欧洲一区二区三区在线观看| 欧美视频在线观看免费网址| 亚洲精品国产拍免费91在线| 黑人精品xxx一区| 国产精品视频白浆免费视频| 国产美女久久精品| 综合国产在线视频| 欧美成人免费网| 午夜精品久久久99热福利| 国产精品女主播| 国产精品人人做人人爽| 国产精品一香蕉国产线看观看| 自拍视频国产精品| 另类图片亚洲另类| 国产美女精品免费电影| 亚洲成人免费网站| 欧美一级高清免费| 中文字幕成人精品久久不卡| 国产亚洲精品成人av久久ww| 在线精品国产欧美| 欧美日韩精品二区| 欧美成在线视频| 国产精品嫩草影院久久久| 国产欧美 在线欧美| 久久久噜噜噜久久| 91免费看国产| 91社影院在线观看| 国产精品吊钟奶在线| 中文字幕精品网| 亚洲男人天堂手机在线| 成人激情视频网| 2019中文字幕全在线观看| 国产xxx69麻豆国语对白| 日韩成人在线播放| 欧美日韩国产123| 亚洲国产美女精品久久久久∴| 欧美午夜视频一区二区| 亚洲黄一区二区| 中文字幕日本精品| 久久久久亚洲精品成人网小说| 一区二区三区回区在观看免费视频| 日韩av在线看| 国产a∨精品一区二区三区不卡| 国产精品扒开腿做爽爽爽视频| 国产成人精彩在线视频九色| 国产精品视频在线观看| 欧美大片在线免费观看| 国产精品一区二区久久国产| 8090成年在线看片午夜| 色午夜这里只有精品| 日韩av在线网站| 亚洲精品网站在线播放gif| 亚洲小视频在线| 欧美极品少妇xxxxⅹ裸体艺术| 日本一本a高清免费不卡| 久久久久久久久中文字幕| 精品中文字幕乱| 欧美xxxx做受欧美| 国产不卡在线观看| 91精品视频在线| 亚洲女人天堂av| 中文字幕国内精品| 亚洲小视频在线观看| 日本一区二三区好的精华液| 国产免费久久av| 91高清在线免费观看| 日韩av免费在线播放| 久久夜精品va视频免费观看| 日韩大片免费观看视频播放| www.欧美三级电影.com| 中文字幕国产日韩| 亚洲人成网站色ww在线| 韩国日本不卡在线| 国产精品高潮呻吟久久av无限| 亚洲精品国产免费| 日韩在线小视频| 97视频在线观看视频免费视频| 九九视频这里只有精品| 久久久久999| 欧美成人高清视频| 97在线免费视频| 91av在线免费观看视频| 欧美中文在线免费| 亚洲三级黄色在线观看| 日韩精品免费在线视频观看| 一本一本久久a久久精品牛牛影视| 亚洲天堂精品在线| 欧美另类在线观看| 欧美日韩亚洲精品一区二区三区| 97在线视频免费观看| 亚洲人成电影网| 欧美性猛交xxxx久久久| 亚洲深夜福利视频| 精品一区二区三区四区在线| 国产精品免费久久久久久| 国产午夜精品久久久| 欧美精品在线第一页| 欧美在线欧美在线| 欧美乱大交xxxxx| 国产日韩欧美中文| 国产精品尤物福利片在线观看| 激情av一区二区| 国产精品www色诱视频| 久久91精品国产91久久跳| 中文字幕欧美日韩在线| xvideos成人免费中文版| 欧美精品少妇videofree| 国产一区二区三区在线观看视频| 日本亚洲精品在线观看| 欧美激情网站在线观看| 国产精品视频区1|