婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 解析一個通過添加本地分區索引提高SQL性能的案例

解析一個通過添加本地分區索引提高SQL性能的案例

熱門標簽:美圖秀秀地圖標注 外呼線路外顯本地號碼 阿爾巴尼亞地圖標注app 人工智能地圖標注自己能做嗎 百度地圖標注素材 征服眼公司地圖標注 征服者火車站地圖標注 word地圖標注方向 開封智能外呼系統廠家

該sql如下:

復制代碼 代碼如下:

Select  /*+ parallel(src, 8) */ distinct
  src.systemname as systemname
  ,  src.databasename as databasename
  ,  src.tablename as tablename
  ,  src.username as username
from  STRONG>meta_dbql_table_usage_exp_hst/STRONG> src
 inner STRONG>join DR_QRY_LOG_EXP_HST/STRONG> rl on
  STRONG>src.acctstringdate = rl.acctstringdate
  and src.queryid = rl.queryid/STRONG>
  And Src.Systemname = Rl.Systemname
  and src.acctstringdate > sysdate - 30
  And Rl.Acctstringdate > Sysdate - 30
 inner join  STRONG>meta_dr_qry_log_tgt_all_hst /STRONG>tgt on
  upper(tgt.systemname) = upper('MOZART')
  And Upper(tgt.Databasename) = Upper('GDW_TABLES')
  And Upper(tgt.Tablename) = Upper('SSA_SLNG_LSTG_MTRC_SD')
  STRONG>AND src.acctstringdate = tgt.acctstringdate
  and rl.statement_id = tgt.statement_id/STRONG>
  and rl.systemname = tgt.systemname
  And Tgt.Acctstringdate > Sysdate - 30
  And Not(
    Upper(Tgt.Systemname)=Upper(src.systemname)
    And
    Upper(Tgt.Databasename) = Upper(Src.Databasename)
    And
    Upper(Tgt.Tablename) = Upper(Src.Tablename)
    )
  And   tgt.Systemname is not null
  And   tgt.Databasename Is Not Null
  And   tgt.tablename is not null


SQL的簡單分析
總得來看,這個SQL就是三個表(meta_dbql_table_usage_exp_hst,DR_QRY_LOG_EXP_HST,meta_dr_qry_log_tgt_all_hst)的INNER JOIN,這三個表數據量都在百萬級別,且都是分區表(以acctstringdate為分區鍵),執行計劃如下:
復制代碼 代碼如下:

------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                              | Name                          | Rows  | Bytes | Cost  | Pstart| Pstop |
------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                       |                               |     1 |   159 |  8654 |       |       |
|   1 |  PX COORDINATOR                        |                               |       |       |       |       |       |
|   2 |   PX SEND QC (RANDOM)                  | :TQ10002                      |     1 |   159 |  8654 |       |       |
|   3 |    SORT UNIQUE                         |                               |     1 |   159 |  8654 |       |       |
|   4 |     PX RECEIVE                         |                               |     1 |    36 |     3 |       |       |
|   5 |      PX SEND HASH                      | :TQ10001                      |     1 |    36 |     3 |       |       |
|*  6 |       TABLE ACCESS BY LOCAL INDEX ROWID| DR_QRY_LOG_EXP_HST            |     1 |    36 |     3 |       |       |
|   7 |        NESTED LOOPS                    |                               |     1 |   159 |  8633 |       |       |
|   8 |         NESTED LOOPS                   |                               |  8959 |  1076K|  4900 |       |       |
|   9 |          BUFFER SORT                   |                               |       |       |       |       |       |
|  10 |           PX RECEIVE                   |                               |       |       |       |       |       |
|  11 |            PX SEND BROADCAST           | :TQ10000                      |       |       |       |       |       |
|  12 |             PARTITION RANGE ITERATOR   |                               |     1 |    56 |  4746 |   KEY |    14 |
|* 13 |              TABLE ACCESS FULL         | META_DR_QRY_LOG_TGT_ALL_HST   |     1 |    56 |  4746 |   KEY |    14 |
|  14 |          PX BLOCK ITERATOR             |                               |  8959 |   586K|   154 |   KEY |   KEY |
|* 15 |           TABLE ACCESS FULL            | META_DBQL_TABLE_USAGE_EXP_HST |  8959 |   586K|   154 |   KEY |   KEY |
|  16 |         PARTITION RANGE ITERATOR       |                               |     1 |       |     2 |   KEY |   KEY |
|* 17 |          INDEX RANGE SCAN              | DR_QRY_LOG_EXP_HST_IDX        |     1 |       |     2 |   KEY |   KEY |
------------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   6 - filter("RL"."STATEMENT_ID"="TGT"."STATEMENT_ID" AND "RL"."SYSTEMNAME"="TGT"."SYSTEMNAME" AND "SRC"."SYSTEMNAME"="RL"."SYSTEMNAME")
  13 - filter(UPPER("TGT"."SYSTEMNAME")='MOZART' AND UPPER("TGT"."DATABASENAME")='GDW_TABLES' AND
              UPPER("TGT"."TABLENAME")='SSA_SLNG_LSTG_MTRC_SD' AND "TGT"."ACCTSTRINGDATE">SYSDATE@!-30 AND "TGT"."SYSTEMNAME" IS NOT NULL
              "TGT"."DATABASENAME" IS NOT NULL AND "TGT"."TABLENAME" IS NOT NULL)
  15 - filter("SRC"."ACCTSTRINGDATE"="TGT"."ACCTSTRINGDATE" AND (UPPER("TGT"."SYSTEMNAME")>UPPER("SRC"."SYSTEMNAME") OR
              UPPER("TGT"."DATABASENAME")>UPPER("SRC"."DATABASENAME") OR UPPER("TGT"."TABLENAME")>UPPER("SRC"."TABLENAME")) AND
              "SRC"."ACCTSTRINGDATE">SYSDATE@!-30)
  17 - access("SRC"."QUERYID"="RL"."QUERYID" AND "SRC"."ACCTSTRINGDATE"="RL"."ACCTSTRINGDATE")
       filter("RL"."ACCTSTRINGDATE">SYSDATE@!-30)

定位問題
從上面執行計劃中的表連接方式可以知道,這三個表之間進行了兩次NESTED LOOP,問題出現在最里層的NESTED LOOP(對兩個表都做了TABLE FULL SCAN),因為表都是百萬級別的(即時過濾后的數據量也不小),性能問題就出現在內表(即被驅動表)META_DBQL_TABLE_USAGE_EXP_HST做了太多次的全表掃描。如果能把全表掃描轉換成索引,則性能可以大幅度提高。

下面是NESTED LOOP的介紹:
嵌套連接把要處理的數據集分為外部循環(驅動數據源)和內部循環(被驅動數據源),外部循環只執行一次,內部循環執行的次數等于外部循環執行返回的數據個數。
這種連接的好處是內存使用非常少。
如果驅動數據源有限,且被驅動表在連接列上有相應的索引,則這種連接方式才是高效的。

下面是這三個表上索引的情況:

復制代碼 代碼如下:

SQL> select index_name, table_name from user_indexes where table_name in ('DR_QRY_LOG_EXP_HST',upper('meta_dbql_table_usage_exp_hst'), upper('meta_dr_qry_log_tgt_all_hs
INDEX_NAME                                                   TABLE_NAME
------------------------------------------------------------ ------------------------------------------------------------
META_DR_QRY_LOG_TGT_ALL_IDX                                  META_DR_QRY_LOG_TGT_ALL_HST
META_DBQL_TUSAGE_EHST_IDX                                    META_DBQL_TABLE_USAGE_EXP_HST
DR_QRY_LOG_EXP_HST_IDX                                       DR_QRY_LOG_EXP_HST
CREATE INDEX "GV"."META_DR_QRY_LOG_TGT_ALL_IDX" ON "GV"."META_DR_QRY_LOG_TGT_ALL_HST" ("STATEMENT_ID", "ACCTSTRINGDATE")
CREATE INDEX "GV"."META_DBQL_TUSAGE_EHST_IDX" ON "GV"."META_DBQL_TABLE_USAGE_EXP_HST" ("QUERYID", "ACCTSTRINGDATE")
CREATE INDEX "GV"."DR_QRY_LOG_EXP_HST_IDX" ON "GV"."DR_QRY_LOG_EXP_HST" ("QUERYID", "ACCTSTRINGDATE")

這三個索引都是本地分區索引(都包含分區鍵acctstringdate),很顯然,DR_QRY_LOG_EXP_HST表少了個索引,因為它與表meta_dr_qry_log_tgt_all_hst 在statement_id上做join,因此應該在它的statement_id上也創建本地分區索引如下:
復制代碼 代碼如下:

create index DR_QRY_LOG_EXP_HST_IDX2 on gv.DR_QRY_LOG_EXP_HST (statement_id,ACCTSTRINGDATE) local;

性能對比
新的執行計劃如下:
復制代碼 代碼如下:

------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                              | Name                          | Rows  | Bytes | Cost  | Pstart| Pstop |
------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                       |                               |     1 |   159 |  4838 |       |       |
|   1 |  SORT UNIQUE                           |                               |     1 |   159 |  4838 |       |       |
|*  2 |   TABLE ACCESS BY LOCAL INDEX ROWID    | META_DBQL_TABLE_USAGE_EXP_HST |     1 |    67 |     3 |       |       |
|   3 |    NESTED LOOPS                        |                               |     1 |   159 |  4816 |       |       |
|   4 |     NESTED LOOPS                       |                               |    18 |  1656 |  4762 |       |       |
|   5 |      PARTITION RANGE ITERATOR          |                               |     1 |    56 |  4746 |   KEY |    14 |
|*  6 |       TABLE ACCESS FULL                | META_DR_QRY_LOG_TGT_ALL_HST   |     1 |    56 |  4746 |   KEY |    14 |
|   7 |      PARTITION RANGE ITERATOR          |                               |    18 |   648 |    16 |   KEY |    14 |
|*  8 |       TABLE ACCESS BY LOCAL INDEX ROWID| DR_QRY_LOG_EXP_HST            |    18 |   648 |    16 |   KEY |    14 |
|*  9 |        STRONG>INDEX RANGE SCAN                | DR_QRY_LOG_EXP_HST_IDX2/STRONG>       |    31 |       |    15 |   KEY |    14 |
|  10 |     PARTITION RANGE ITERATOR           |                               |     1 |       |     2 |   KEY |   KEY |
|* 11 |      INDEX RANGE SCAN                  | META_DBQL_TUSAGE_EHST_IDX     |     1 |       |     2 |   KEY |   KEY |
------------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   2 - filter((UPPER("TGT"."SYSTEMNAME")>UPPER("SRC"."SYSTEMNAME") OR
              UPPER("TGT"."DATABASENAME")>UPPER("SRC"."DATABASENAME") OR UPPER("TGT"."TABLENAME")>UPPER("SRC"."TABLENAME"))
              AND "SRC"."SYSTEMNAME"="RL"."SYSTEMNAME")
   6 - filter(UPPER("TGT"."SYSTEMNAME")='MOZART' AND UPPER("TGT"."DATABASENAME")='GDW_TABLES' AND
              UPPER("TGT"."TABLENAME")='SSA_SLNG_LSTG_MTRC_SD' AND "TGT"."ACCTSTRINGDATE">SYSDATE@!-30 AND "TGT"."SYSTEMNAME"
              IS NOT NULL AND "TGT"."DATABASENAME" IS NOT NULL AND "TGT"."TABLENAME" IS NOT NULL)
   8 - filter("RL"."SYSTEMNAME"="TGT"."SYSTEMNAME")
   9 - access("RL"."STATEMENT_ID"="TGT"."STATEMENT_ID" AND "RL"."ACCTSTRINGDATE">SYSDATE@!-30 AND
              "RL"."ACCTSTRINGDATE" IS NOT NULL)
  11 - access("SRC"."QUERYID"="RL"."QUERYID" AND "SRC"."ACCTSTRINGDATE"="RL"."ACCTSTRINGDATE")
       filter("SRC"."ACCTSTRINGDATE"="TGT"."ACCTSTRINGDATE" AND "SRC"."ACCTSTRINGDATE">SYSDATE@!-30)

從新的的執行計劃可以看出,它的第一個NESTED LOOP果然用了最新創建的索引。
下面是執行時間:
復制代碼 代碼如下:

已用時間:  00: 00: 02.16

兩秒種搞定,遠遠超出他期望的5s :)
方法總結
NESTED LOOP高效的條件:驅動數據源有限,且被驅動表在連接列上有相應的索引。

標簽:泰安 淮南 宜春 酒泉 葫蘆島 孝感 海北 六安

巨人網絡通訊聲明:本文標題《解析一個通過添加本地分區索引提高SQL性能的案例》,本文關鍵詞  解析,一個,通過,添加,本地,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《解析一個通過添加本地分區索引提高SQL性能的案例》相關的同類信息!
  • 本頁收集關于解析一個通過添加本地分區索引提高SQL性能的案例的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产精品传媒在线| 一区二区三区中文字幕精品精品| 欧美丰满美乳xxx高潮www| 51精品视频一区二区三区| 精品午夜久久福利影院| 欧美视频精品在线观看| 欧美性猛交xxxx乱大交退制版| www..com久久爱| 欧美在线视频你懂得| 欧美精品一级二级三级| 欧美日韩国产首页在线观看| 欧美成人福利视频| 国产精品五月天| 蜜桃视频一区二区三区在线观看| 狠狠色丁香久久婷婷综合_中| 欧洲亚洲精品在线| 欧美裸体bbwbbwbbw| 成人免费毛片片v| 成人18视频日本| 日韩久久久精品| 三级欧美在线一区| 综合分类小说区另类春色亚洲小说欧美| 91麻豆福利精品推荐| 有码一区二区三区| 91成人网在线| 欧美精品123区| 91免费看`日韩一区二区| 91女人视频在线观看| 精品国产乱码久久久久久老虎 | 日本一区二区三级电影在线观看 | 欧美一区二区三区思思人| 国产精品久久久久久久久快鸭| 成人av在线资源网| 国内精品伊人久久久久av一坑| 中文字幕免费一区| 欧美在线一二三四区| 夜夜精品浪潮av一区二区三区 | 蜜臀av亚洲一区中文字幕| 精品视频999| 亚洲成人你懂的| 日韩欧美综合在线| 91视频精品在这里| 免费人成精品欧美精品| 亚洲欧洲日韩在线| 亚洲国产毛片aaaaa无费看 | 偷拍一区二区三区| av午夜一区麻豆| 欧美一级二级三级乱码| 欧美大片顶级少妇| 国产精品一区久久久久| a美女胸又www黄视频久久| 国产精品美女久久久久aⅴ| 不卡的av电影在线观看| 一本色道久久加勒比精品| 亚洲午夜日本在线观看| 成人av综合在线| 欧美性色黄大片| 99久精品国产| 韩日av一区二区| 同产精品九九九| 亚洲综合无码一区二区| 午夜电影网一区| 亚瑟在线精品视频| 色屁屁一区二区| 五月综合激情日本mⅴ| 精品国产乱码久久| 久久精工是国产品牌吗| 日韩一区日韩二区| 亚洲视频狠狠干| 亚洲女厕所小便bbb| 韩国欧美国产一区| 国产精品国产三级国产有无不卡 | 国产欧美日韩不卡| 亚洲精品国产a| 中文字幕一区二区三区四区 | 夜夜爽夜夜爽精品视频| 日韩一二三四区| 91精品国产综合久久福利| 99re免费视频精品全部| 亚洲小说欧美激情另类| 国内精品国产三级国产a久久 | 精品国产免费视频| 欧美精品丝袜中出| 美女视频黄 久久| 国产毛片精品国产一区二区三区| 国产三级精品三级在线专区| 在线播放欧美女士性生活| 欧美日韩在线直播| 69堂精品视频| 成人高清伦理免费影院在线观看| 欧美国产禁国产网站cc| 在线免费观看日本欧美| 国产精品美女久久久久久久久久久 | 91麻豆国产精品久久| 亚洲一区二区三区激情| 日本不卡视频在线| 亚洲成人在线免费| 久久国产福利国产秒拍| 国产亚洲欧美一级| 久久精品一区二区三区不卡牛牛| 久久久不卡网国产精品一区| 日本一区二区在线不卡| 成人免费一区二区三区视频| 日韩—二三区免费观看av| 国产老肥熟一区二区三区| 91丝袜国产在线播放| 成人国产精品免费观看视频| 欧美夫妻性生活| 亚洲免费观看高清在线观看| 石原莉奈一区二区三区在线观看| 蜜臀av一区二区在线免费观看 | 色8久久人人97超碰香蕉987| 亚洲天堂免费看| 国产日韩欧美综合在线| 亚洲福利国产精品| 欧美日韩国产免费一区二区| 午夜视频一区二区| 高清成人免费视频| 亚洲欧洲综合另类在线| 成人动漫一区二区| 久久精品人人做| 亚洲大片一区二区三区| 欧美日韩中文另类| 国产一区二区三区高清播放| 亚洲自拍偷拍av| 欧美一级午夜免费电影| 精品免费日韩av| 亚洲不卡在线观看| 99久久婷婷国产精品综合| 国产成人在线色| 久久九九久精品国产免费直播| 国产精品一卡二卡在线观看| 中文字幕第一页久久| 成人性生交大合| 91精品国产色综合久久ai换脸| 国产精品久久久久久久午夜片| 在线免费观看日韩欧美| 国内精品伊人久久久久av一坑 | 欧美系列亚洲系列| 久久精品久久综合| 91成人网在线| www日韩大片| 中文在线免费一区三区高中清不卡| 久久女同精品一区二区| 91精品国产91热久久久做人人| 久久av老司机精品网站导航| 国产精品视频免费| 国产一本一道久久香蕉| 国产三级欧美三级日产三级99| 色哟哟欧美精品| 欧美一区二区三区四区在线观看| 丁香天五香天堂综合| 久久99最新地址| 国产成人精品三级| 91精品国产一区二区三区香蕉| 国产亚洲欧美在线| 91在线丨porny丨国产| 日韩一区二区三区四区五区六区 | 一区二区欧美精品| 三级一区在线视频先锋| 日本aⅴ亚洲精品中文乱码| 91蝌蚪porny| 国产乱码精品一区二区三| 久久亚洲私人国产精品va媚药| 亚洲精品国产精品乱码不99| 99riav一区二区三区| 欧美最猛性xxxxx直播| 免费视频最近日韩| 欧美乱妇23p| 亚洲二区在线视频| 色94色欧美sute亚洲13| 91麻豆文化传媒在线观看| 91免费版pro下载短视频| 成人理论电影网| 一区二区三区在线观看欧美| 免费高清不卡av| 九色|91porny| 黄色资源网久久资源365| 麻豆精品一区二区三区| 美女脱光内衣内裤视频久久影院| 久久国产精品露脸对白| 日韩欧美一区在线| 色综合久久久久综合| 91一区二区三区在线播放| 久久精品99国产国产精| 日韩一区欧美二区| 国产亚洲精品久| 国产精品短视频| 天天操天天综合网| 午夜欧美2019年伦理| 久久国产精品99精品国产| 尤物av一区二区| 日韩欧美在线网站| 日韩福利视频导航| 欧美酷刑日本凌虐凌虐| 亚洲成人手机在线| 欧美日韩卡一卡二| 欧美一区二区精品久久911| 国产一区二区调教| 日韩二区三区在线观看|