精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

從一個開發需求的解決方案看Oracle臨時表

數據庫 Oracle
最近有一個開發需求,大致需要先使用主表,或主表和幾張子表關聯查詢出 ID(主鍵) 及一些主表字段,然后再用這些 ID 查找最多 10 張表中對應的記錄,主表記錄數大約 2000 萬,每張子表的記錄數均為百萬以上,最多可能會有 5000 萬,主表一條數據可能對應子表多條數據。

[[222506]]

一、開發需求 

最近有一個開發需求,大致需要先使用主表,或主表和幾張子表關聯查詢出 ID(主鍵) 及一些主表字段,然后再用這些 ID 查找最多 10 張表中對應的記錄,主表記錄數大約 2000 萬,每張子表的記錄數均為百萬以上,最多可能會有 5000 萬,主表一條數據可能對應子表多條數據。現在開發使用的邏輯是: 

1. 使用條件查詢主表或主表和幾張子表 (不同場景) 符合條件的主表記錄 ID 值及其他一些主表字段項。 

2. 利用這些主表 ID 值,分別和幾張子表使用 IN 子句,查詢出子表中符合條件的記錄項。有幾張子表,就執行幾次 SQL 語句。

這么做的弊端是

由于 (1) 查出的 ID 值最多可能會有 100 個以上,因此子表使用 IN 子句的時候很有可能導致 CBO 選擇全表掃描,雖然從理論上說,一條 SQL 未必適用索引掃描效率就一定高,CBO 一定是基于現有的統計信息選擇一條成本值***的執行計劃,但一張***甚至***的表,全表掃描的效率可想而知 (這兒我們不較真,可能通過 SSD、Exadata 硬件層面的使用能提高全表掃描的效率,此處只討論一般存儲條件下可行的方案)。另外,就是場景需要幾張子表,就會執行幾次 SQL,一個場景下可能需要執行很多次 SQL 語句。

綜合需求,可能至少有以下幾種改進方案

1. 使用一條 SQL 完成上述需求。 

(1.1) 主表和所有子表采用 join 關聯的方式。 

兩表兩表做 join,又由于主子表之間是一對多的關系,很可能造成結果集因為笛卡爾積變得很大,應用處理出現內存溢出的錯誤。 

(1.2) 使用 union all 的方式關聯子表,作為 VIEW,然后和主表做關聯,這是羅大師推薦的方式,例如:

 

  1. SELECT A.ID, A.NAME   
  2. FROM   
  3. T_ZHUBIAO A,   
  4. (SELECT ID, NAME FROM T_ZIBIAO1 UNION ALL SELECT ID, NAME FROM T_ZIBIAO2) B   
  5. WHERE A.NAME = 'A' AND A.ID = B.ID;  

和 (1.1) 的區別就是每一張子表的檢索都是一次獨立的索引唯一掃描,所有子表關聯后作為 VIEW,和主表做一次嵌套循環連接。但據了解,需求中每張子表的字段基本都不相同,有的子表選擇字段有幾十個,這么一來,使用這種 UNION ALL 需要檢索字段類型相同,開發拼接起來就比較費勁,不靈活。 

2. 將 (1) 的結果集存入一張臨時表 (temporary table,不是應用自行處理的普通表),相當于臨時結果集,每次子表都是和這張臨時表做兩表關聯查詢,這么做可以避免因為 IN 值太多導致的低效檢索,同時由于兩表關聯字段均為主鍵或外鍵 (設置索引),可以使用索引掃描檢索,采用交易級別控制的臨時表,可以在完成本次交易后讓 Oracle 自動清空數據,同時 session 之間數據隔離。 

3.(1) 不變,只是 (2) 中每次子表查詢,由應用控制,例如每 30 個 IN 值執行一條 SQL 語句,將一次子表查詢拆分為若干次查詢,好處是每次可以使用外鍵索引掃描檢索結果集,壞處就是無形中又多了 N 次 SQL 語句的執行。

綜上三種方案,(1) 由于潛在的結果集過大的問題以及靈活性問題,被開發否了,目前采用的是方案 (3),因為其對開發的改造較小,僅需要拆分 IN 語句,如果檢索效率較高,測試結論符合非功能要求,就采用這種方式,若不滿足要求,則會考慮使用方案 (2)。

就我來說,如果能滿足需求,方案 1 是***的,使用合適的索引完成一次檢索,減少了應用和數據庫之間的交互次數,但可能這種業務需求確實很復雜,獲取信息方面確實要求比較高。其次是方案 2,雖然子表執行 SQL 次數未變,但通過臨時表,可以保證每次檢索均可以使用索引快速定位,避免大表的全表掃描,同時臨時表特性對應用幾乎透明。方案 3,唯一的好處就是避免了大表的全表掃描,但代價是會多一些 SQL 交互,至于究竟是否可以彌補性能上的差異,只能待性能測試的結論來看了。

如果各位對上述需求有更好的解決方案,或是上述方案仍有問題,還請不吝指正!

二、臨時表介紹和實驗 

需要緩存中間結果集的場景,可以考慮使用臨時表,因為臨時表中的數據是 session 級別私有,每個 session 僅能看見和修改自己的數據,在 session 結束的時候,表中數據會被自動刪除,無需應用操作。創建臨時表使用的是 CREATE GLOBAL TEMPORARY TABLE 語法,ON COMMIT 子句則決定了表數據是交易級別還是 session 級別,默認是交易級別。可以對臨時表創建索引、視圖或觸發器。

ON COMMIT 子句的兩種參數區別如下: 

臨時表中的數據默認存儲于默認的臨時表空間,可以創建過程中指定其他的臨時表空間。臨時表的數據和索引在定義的時候不會分配段,只有使用 INSERT(CTAS) 插入語句的時候,才會開始分配段空間。

創建交易級別臨時表:

 

  1. SQL> create global temporary table test (id number, name varchar2(10)) on commit delete rows

查看表屬性,TEMPORARY 指定為 Y,說明是臨時表,沒有 tablespace_name 參數值,說明不是使用普通表空間存儲。

 

  1. SQL> select table_name, tablespace_name, temporary from dba_tables where owner='BISAL' 
  2. TABLE_NAME  TABLESPACE_NAME  TEM  
  3. ---------------- --------------------        ---  
  4. TEST                                            Y 

session 1 執行:

 

  1. SQL> insert into test values(1, 'a');  
  2. SQL> select * from test;  
  3. ID NAME  
  4. -- ----   
  5. 1 a 

session 2 執行:

 

  1. SQL> select * from test;  
  2. no rows selected 

 

說明臨時表數據 session 級別隔離,

session 1 執行:

 

  1. SQL> commit 
  2. SQL> select * from test;  
  3. no rows selected 

 

執行 commit 結束交易,Oracle 會自動刪除臨時表中數據。

創建 session 級臨時表:

 

  1. SQL> create global temporary table test (id number, name varchar2(10)) on commit preserve rows

表屬性相同:

 

  1. SQL> select table_name, tablespace_name, temporary from dba_tables where owner='BISAL' 
  2.  
  3. TABLE_NAME   TABLESPACE_NAME  TEM  
  4. --------------     --------------------       ---  
  5. TEST                                             Y 

session 1 執行:

 

  1. SQL> insert into test values(1, 'a');  
  2. SQL> select * from test;  
  3. ID NAME  
  4. -- ----   
  5. 1   a 

session 2 執行:

 

  1. SQL> select * from test;  
  2. no rows selected 

session 1 執行:

 

  1. SQL> commit 
  2. SQL> select * from test;  
  3. ID NAME  
  4. -- ----   
  5. 1   a 

執行 commit 后,數據未刪除。退出當前 session 再登陸,發現數據已被刪除了:

 

  1. SQL> select * from test;  
  2. no rows selected 

 

總結

臨時表使用起來其實很簡單,除了一些語法上和普通建表語句有些不同,對應用來說就可以當作普通表使用,但其實還是有一些細節需要注意: 

1. 臨時表默認使用的是默認臨時表空間,如果應用會有很多排序等需要耗費臨時表空間的場景,而且臨時表使用頻率很高,那么為了避免互相影響,可以考慮為臨時表建一個獨立的臨時表空間。 

 

2. 如果使用 session 級別的臨時表,且應用使用了連接池,則需要確保應用完成一次交易過程中使用的是同一 session,避免違反臨時表使用規則。 

責任編輯:龐桂玉 來源: ITPUB
相關推薦

2010-04-28 11:48:13

Oracle MySQ

2011-08-11 18:38:05

Oracle回滾段

2010-10-28 13:53:13

ORACLE存儲過程

2010-04-28 18:49:10

Oracle臨時表

2009-03-17 09:27:52

ITSMITIL解決方案

2018-11-05 11:06:38

openmediavaNAS 方案

2011-06-08 22:06:04

工作站解決方案

2012-09-04 09:40:01

2019-07-08 10:01:33

物聯網IOT技術

2010-11-30 16:50:42

2023-02-10 15:41:50

物聯網物聯網平臺

2009-07-28 11:37:55

7類布線端口

2011-04-13 13:56:52

Oracle臨時表

2013-08-26 09:18:52

2020-08-10 08:30:23

開發軟件開源

2021-04-11 09:00:13

Fes.js前端

2010-05-07 16:30:01

Oracle數據集成

2010-04-30 17:33:27

Oracle數據集成

2012-03-21 11:10:00

JDBCMySQLJava

2023-03-29 10:48:28

點贊
收藏

51CTO技術棧公眾號

欧美调教网站| 狠狠躁少妇一区二区三区| 蜜芽一区二区三区| 欧美国产日韩一区二区在线观看 | 波多野结衣不卡视频| 亚洲伊人伊成久久人综合网| 一区二区三区高清在线| 国产精品二区三区四区| 精人妻无码一区二区三区| 天天精品视频| 亚洲老板91色精品久久| 久久精品国产露脸对白| 麻豆mv在线观看| 国产精品不卡一区| 精品免费日产一区一区三区免费| 日韩av手机在线免费观看| 99a精品视频在线观看| 91国在线观看| 韩日视频在线观看| 亚洲精品传媒| 91小视频在线| 91九色露脸| 性无码专区无码| 中文精品久久| 中文字幕精品一区久久久久| 艳妇乳肉豪妇荡乳xxx| 日韩电影精品| 色综合天天在线| 免费特级黄色片| 欧美猛烈性xbxbxbxb| 91亚洲资源网| 丁香婷婷久久久综合精品国产| 成人免费毛片东京热| 亚洲性视频大全| 亚洲成av人乱码色午夜| 中文字幕 欧美日韩| 一区二区三区电影大全| 亚洲成在人线免费| 国产精品igao激情视频| 理论片午午伦夜理片在线播放| 日韩国产欧美在线视频| 97精品国产97久久久久久| 欧美日韩国产精品一区二区三区 | 99精品国产在热久久婷婷| 久久精品99无色码中文字幕| 在线观看亚洲大片短视频| 日韩欧美ww| 亚洲国产毛片完整版| 国产清纯白嫩初高中在线观看性色| 七七成人影院| 亚洲蜜臀av乱码久久精品蜜桃| 99在线高清视频在线播放| 一级黄色大片网站| 另类中文字幕网| 国产美女精品视频免费观看| 欧美成人一区二区视频| 日本最新不卡在线| 国产精品www网站| 波多野结衣一区二区三区四区| 欧美丰满日韩| 国产一区二区三区18| 真实乱视频国产免费观看| 在线看成人短视频| 揄拍成人国产精品视频| 国产黄色大片免费看| 欧美一区二区三| 精品国偷自产在线| 欧美成人精品欧美一| 国内一区二区三区| 91精品国产精品| 久久久久久不卡| 日韩av一级电影| 国产欧美一区二区| 国产免费一区二区三区最新不卡| 一本色道久久综合| 97在线观看视频国产| 久久久久久少妇| 日韩精品一二三区| 国产综合视频在线观看| 精品人妻伦一二三区久久 | ...av二区三区久久精品| 一区二区日本| 日本天码aⅴ片在线电影网站| 久久影院视频免费| 欧美一区二视频在线免费观看| 亚洲乱色熟女一区二区三区| 成人高清av在线| 欧美一区二区综合| 搞黄网站在线观看| 精品久久久久久亚洲国产300| 中文字幕在线观看一区二区三区| 天堂在线中文字幕| 亚洲国产精品成人综合色在线婷婷 | 日韩精品亚洲一区二区三区免费| 欧美精品福利在线| aaa人片在线| 日韩和欧美一区二区| 亚洲iv一区二区三区| 少妇人妻精品一区二区三区| 国产欧美日韩在线观看| 日韩中文字幕亚洲精品欧美| 亚洲第一av| 欧美一区二区在线视频| 亚洲精品乱码久久久久久久| 成人中文在线| 国内精品视频久久| 中文字幕一区二区免费| 成人动漫视频在线| 亚洲视频sss| 白浆视频在线观看| 欧美丰满高潮xxxx喷水动漫| 中文字幕乱视频| 久久视频在线| 日本国产高清不卡| 亚洲va久久久噜噜噜无码久久| 国产成人午夜电影网| 日本一区视频在线观看免费| 牛牛在线精品视频| 欧美高清hd18日本| chinese麻豆新拍video| 亚洲a在线视频| 国产97免费视| 日本韩国免费观看| 亚洲色图视频免费播放| 999在线免费视频| 美国成人xxx| 欧美成人免费视频| 中国一级片黄色一级片黄| 91免费视频网| 国产真人做爰毛片视频直播| 91成人短视频在线观看| 国产一区二区三区毛片| 日韩污视频在线观看| 久久av中文字幕片| 色婷婷精品国产一区二区三区| 亚洲搞黄视频| 欧美性生活大片视频| 少妇特黄一区二区三区| 亚洲人体偷拍| 国产精品二区三区四区| 亚洲夜夜综合| 欧美一级免费大片| 成年人一级黄色片| 免费成人美女在线观看.| 日韩中文不卡| 日本精品裸体写真集在线观看| 欧美日韩一二三| 国产在线观看h| 日韩精品视频网站| 神马影院一区二区| 欧美性xxx| 亚洲欧洲日产国码av系列天堂| 婷婷激情四射网| 久久国产精品色| 亚洲最新在线| 中文字幕综合| 欧美成人一二三| 国产精品系列视频| 亚洲精品国久久99热| 91精品国产高清91久久久久久| 国产欧美亚洲精品a| 国产精国产精品| 日韩av片免费观看| 国产精品高潮呻吟久久av无限| 成人淫片在线看| 99热这里只有精品5| 国产精品国产精品国产专区不片 | 美女100%露胸无遮挡| 亚洲a一区二区三区| 91在线精品播放| 91精品久久久久久粉嫩| 日韩精品一区二区三区在线观看| 好吊日免费视频| 久久婷婷亚洲| 亚洲国产日韩欧美| 日韩精品一级毛片在线播放| 久久在线视频在线| 欧美 日韩 国产 精品| 黄色成人在线播放| 亚洲国产日韩一区无码精品久久久| 激情久久综合| 欧美精品欧美精品| 久久爱.com| 久久久久久久久综合| 免费黄色在线视频网站| 欧美日韩一区 二区 三区 久久精品| 国产肉体xxxx裸体784大胆| 噜噜噜在线观看免费视频日韩| 亚洲一区二区三区香蕉 | 大地资源网3页在线观看| 91麻豆精品国产自产在线观看一区| 欧美激情亚洲色图| 极品少妇一区二区| 亚洲色成人www永久在线观看| 国产日韩一区二区三免费高清| 亚洲最新av在线网站| 国产精品特级毛片一区二区三区| 国产欧美中文在线| ass极品水嫩小美女ass| 久久久久久色| 久久精品在线免费视频| 亚洲人成精品久久久 | 韩国主播福利视频一区二区三区| 欧美成人精品福利| 99久久久无码国产精品免费蜜柚| 91视频观看视频| 国内国产精品天干天干| 99热在线精品观看| 自拍另类欧美| 亚洲国产欧美日韩在线观看第一区 | 欧美熟妇精品黑人巨大一二三区| 激情五月***国产精品| 日韩欧美一区二区三区久久婷婷| 日韩在线观看不卡| 97精品视频在线观看| 香蕉视频免费在线播放| 亚洲精品国产精品国自产观看浪潮 | 亚洲视频在线一区观看| 麻豆av免费观看| 成人午夜在线播放| 黄色小视频免费网站| 日韩视频一区二区三区在线播放免费观看| 国产美女精品久久久| 成人在线高清| 热久久免费视频精品| 99爱在线观看| 欧美第一黄网免费网站| 精品欧美色视频网站在线观看| 欧美一级日韩一级| 亚洲精品毛片一区二区三区| 五月激情丁香一区二区三区| 欧美三级小视频| 亚洲人成网站在线| 最新黄色av网址| 国产欧美日韩另类视频免费观看| 激情在线观看视频| 另类调教123区 | 97超级碰碰| 日韩五码电影| 国产男人精品视频| 91精品国产66| 国产精品黄页免费高清在线观看| 三区四区在线视频| 一区二区欧美激情| 国产精品麻豆一区二区三区| 亚洲美女免费精品视频在线观看| 中文字幕av免费观看| 色94色欧美sute亚洲线路一ni| 三级黄色录像视频| 中文字幕一区在线| 成人在线观看高清| 最新高清无码专区| 日本a级片视频| 免费在线黄色片| 国产午夜久久久久| 美女被到爽高潮视频| 国产亚洲综合av| 欧美人与性囗牲恔配| 欧美激情一区二区在线| 内射毛片内射国产夫妻| 亚洲欧洲av在线| 日本视频在线免费| 久久久精品黄色| 亚洲久久久久久| 成人免费毛片app| 国产人妻黑人一区二区三区| 91亚洲男人天堂| 91视频免费在观看| 国产精品蜜臀在线观看| √天堂中文官网8在线| 一区二区免费视频| 在线观看 中文字幕| 色欧美片视频在线观看在线视频| 国产wwwwxxxx| 亚洲女人****多毛耸耸8| 午夜69成人做爰视频| 亚洲精品写真福利| 国产一二三四在线| 欧美日韩在线另类| 91午夜交换视频| 亚洲第一中文字幕| 欧美日韩伦理片| 日韩在线播放一区| free性护士videos欧美| 国产成人精品电影久久久| 国产剧情一区二区在线观看| 国产免费一区| 四虎国产精品免费观看| 日韩a级黄色片| 欧美一级视频| 天天综合成人网| 91在线视频观看| 97精品在线播放| 婷婷夜色潮精品综合在线| 男人的天堂av网站| 日韩写真欧美这视频| 欧洲毛片在线| 欧美成人精品影院| 国产一区二区三区影视| 国产精品成人观看视频免费| 国产欧美日韩免费观看| 中文精品无码中文字幕无码专区| 欧美国产免费| 成年人网站大全| 国产suv精品一区二区三区| 波多野在线播放| 亚洲国产一区二区三区青草影视| 久久久久久久久艹| 色噜噜久久综合| 国产91久久久| 久久精品久久久久久| 周于希免费高清在线观看| 91精品国产高清久久久久久91裸体 | 午夜精品影视国产一区在线麻豆| 国产精品高清一区二区三区| 国产真实有声精品录音| 五月丁香综合缴情六月小说| 久久精品国产亚洲a| 丰满圆润老女人hd| 亚洲777理论| www日本视频| 色吧影院999| 欧美日韩五区| 久久综合九色综合网站| 国内精品福利| 热久久久久久久久| 国产精品网站导航| 国产一级片免费在线观看| 亚洲精品福利免费在线观看| 国产丝袜在线播放| 亚洲自拍偷拍视频| 亚洲91视频| 国产毛片久久久久久| 中日韩免费视频中文字幕| 亚洲大片免费观看| 亚洲摸下面视频| 超碰超碰人人人人精品| 精品毛片久久久久久| 亚洲巨乳在线| 亚洲色偷偷色噜噜狠狠99网| 一区二区三区四区激情| 99久久精品国产成人一区二区| 精品国产伦一区二区三区免费| 全国男人的天堂网| 欧美国产极速在线| 一区二区三区高清在线观看| 91成人在线精品| 日本三级黄色大片| 亚洲二区在线播放视频| 免费在线观看的电影网站| 国产色综合天天综合网 | 91麻豆精品国产自产在线| av在线三区| 国产欧美在线播放| 天天做天天爱天天爽综合网| 亚洲精品永久视频| 自拍偷自拍亚洲精品播放| 国产精品高潮呻吟久久久| 久久精品国产一区二区三区| 国产精选久久| 亚洲色成人www永久在线观看| 日本最新不卡在线| 成人区人妻精品一区二| 精品久久久一区| 日韩精品系列| 国产成人在线一区| 日韩精品2区| 波多野结衣网页| 亚洲国产日韩一区二区| 色av男人的天堂免费在线| 国产99久久久欧美黑人| 日韩中文欧美| 又黄又爽又色的视频| 亚洲成人综合视频| 国产福利在线视频| 亚洲精品免费在线视频| 亚洲电影av| 日韩免费成人av| 欧美一区二区三区小说| 成人国产电影在线观看| 日韩欧美亚洲v片| 国产精品99久久久久| 国产又黄又粗又爽| 中文字幕亚洲一区在线观看| 韩国一区二区三区视频| 妞干网在线观看视频| 国产丝袜在线精品| 精品久久久中文字幕人妻| 欧美一级淫片videoshd| 欧美老女人另类| 亚洲欧美综合视频| 欧洲精品一区二区三区在线观看| 色综合888| 成人免费直播live| 国产精品亚洲综合久久| 快灬快灬一下爽蜜桃在线观看| 欧美性生活一区| 国产羞羞视频在线播放| 久久手机视频| 国产伦精品一区二区三区视频青涩|