精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲欧美视频在线播放| 欧美一级特黄aaaaaa在线看片| 你懂的国产在线| 欧美系列电影免费观看 | 亚洲男子天堂网| 亚洲欧美自拍另类日韩| 成人免费一区二区三区牛牛| 久久久久久免费毛片精品| 国产精品一区二区久久久| 欧美日韩激情在线观看| 国产日韩欧美一区二区三区| 日韩一区二区在线看| 97成人在线观看视频| 韩国av网站在线| 久久先锋影音av| 97视频热人人精品| 波多野结衣mp4| 精品动漫3d一区二区三区免费版| 伊人久久大香线蕉av一区二区| 国产精品嫩草69影院| 欧美日韩女优| 亚洲第一激情av| 青少年xxxxx性开放hg| 欧美xxx.com| 懂色av一区二区三区蜜臀| 国产精品色视频| 久草国产精品视频| 欧美国产高清| 一区二区三区视频免费| 男男做爰猛烈叫床爽爽小说| 色综合视频一区二区三区44| 日韩欧美亚洲国产一区| 成人午夜视频免费观看| 久草中文在线观看| 国产女主播一区| 就去色蜜桃综合| 人妻精品一区二区三区| 国产黄色成人av| 国产日韩欧美夫妻视频在线观看| 无码任你躁久久久久久久| 亚洲一级黄色| 欧美精品videos另类日本| 特一级黄色录像| 欧美激情电影| 日韩在线视频二区| 欧洲美熟女乱又伦| 国产成人精品三级高清久久91| 精品久久久久香蕉网| 一本之道在线视频| 电影91久久久| 91精品国产综合久久久蜜臀粉嫩 | 欧美黄色片在线观看| 麻豆91蜜桃| 毛片毛片毛片毛| 欧美一级在线| 9191精品国产综合久久久久久| 日韩av在线中文| 成人在线观看免费播放| 欧美午夜电影网| 三年中国国语在线播放免费| 欧美日韩亚洲国产| 欧美日本在线播放| 日日夜夜精品视频免费观看| 日韩在线观看中文字幕| 精品精品欲导航| 亚州av综合色区无码一区| 久久精品凹凸全集| 亚洲日本成人女熟在线观看| 欧美激情亚洲色图| 成人午夜av| 久久精品视频一| 久久久久久国产精品免费播放| 伊人久久久大香线蕉综合直播| 午夜美女久久久久爽久久| 亚洲GV成人无码久久精品| 日本成人中文字幕在线视频| 国产一区二区色| 午夜精品久久久久久久爽| av综合在线播放| 免费99视频| 日韩黄色影院| 亚洲韩国精品一区| 国产精彩免费视频| 91成人短视频在线观看| 欧美精品一区二区三区很污很色的 | 在线天堂中文资源最新版| 色婷婷国产精品| 日韩成人av免费| 欧美18免费视频| 最近中文字幕mv在线一区二区三区四区| 亚洲熟女毛茸茸| 精品9999| 成人激情免费在线| 蜜臀av午夜精品| 国产精品盗摄一区二区三区| 欧美日韩福利在线| 丁香婷婷久久| 精品卡一卡二卡三卡四在线| 欧美另类z0zx974| 欧美~级网站不卡| 茄子视频成人在线| 国产伦精品一区二区三区视频痴汉| 国产**成人网毛片九色| 日本视频一区在线观看| a毛片不卡免费看片| 欧美三级在线视频| 国产女人18毛片水真多18| 成人免费av| 97成人精品视频在线观看| 一本色道久久综合熟妇| 成人性色生活片| 亚洲国产日韩欧美| 黄毛片在线观看| 欧美福利视频导航| 中文字幕国产综合| 国产精品大片| 成人激情视频在线观看| 黄色在线视频观看网站| 午夜精品一区二区三区免费视频| 日日干夜夜操s8| 深夜福利久久| 97久久超碰福利国产精品…| 国产福利小视频| 国产精品久久久久7777按摩| 国产裸体舞一区二区三区| 91久久偷偷做嫩草影院电| 色妞在线综合亚洲欧美| 日本黄色中文字幕| 91视频在线看| 日韩网站在线免费观看| 香蕉成人app| 欧美精品中文字幕一区| 一级黄色a毛片| 中文字幕精品一区二区精品绿巨人| 成人中文字幕在线播放| 视频一区国产| 蜜臀久久99精品久久久久久宅男 | 97在线免费视频观看| 亚洲伦理网站| 久久精品电影网| 色婷婷久久综合中文久久蜜桃av| 久久久综合网站| 国产高清精品在线观看| 西瓜成人精品人成网站| 7m精品福利视频导航| 欧美一级淫片aaaaaa| 亚洲成人1区2区| 国产一级免费片| 亚洲日产国产精品| 国产综合色一区二区三区| www.8ⅹ8ⅹ羞羞漫画在线看| 精品91自产拍在线观看一区| 国产无码精品久久久| 成人av电影在线播放| 韩日视频在线观看| 国产精品nxnn| 97超碰国产精品女人人人爽| 你懂的视频在线免费| 色噜噜狠狠一区二区三区果冻| 成人性生交大免费看| 日韩极品在线观看| 天堂√在线观看一区二区| 日韩成人一区| 成人97在线观看视频| www.国产精品视频| 亚洲国产精品久久人人爱| 久久久久久婷婷| 香蕉精品999视频一区二区 | 亚洲精品欧美日韩| 污污片在线免费视频| 亚洲电影av在线| chinese国产精品| 国产精品少妇自拍| 中文字幕55页| 一区二区91| 翔田千里亚洲一二三区| 欧美视频二区欧美影视| 91国产一区在线| 国产在线91| 欧美一区二区国产| 欧美另类一区二区| 中文字幕精品一区二区精品绿巨人 | 亚洲日韩欧美视频一区| 一区二区视频免费观看| 亚洲激情中文1区| 久久人人爽人人爽人人片| 日韩成人av影视| www.一区二区.com| 欧洲专线二区三区| 91色在线视频| 在线观看网站免费入口在线观看国内 | 丝袜在线视频| 亚洲欧美日韩一区二区三区在线| 一级片视频网站| 午夜av电影一区| 欧美美女性生活视频| 成人激情av网| 日韩在线一区视频| 欧美亚洲专区| 成人免费看片'免费看| 精品国产1区| 国产另类自拍| 色综合久久久| 日韩免费av一区二区| 少女频道在线观看高清| 夜夜嗨av色一区二区不卡| 色香蕉在线视频| 91精品欧美一区二区三区综合在| 国产性生活视频| 亚洲成人自拍网| 四虎884aa成人精品| 国产亚洲成av人在线观看导航| 美女又黄又免费的视频| 日本少妇一区二区| 99久久国产综合精品五月天喷水| 先锋资源久久| 先锋影音网一区| 天堂日韩电影| 国产精品一区二区三区免费| 国产精一区二区| 国产精品久久91| 亚洲欧美小说色综合小说一区| 久久91精品国产91久久跳| 在线观看免费黄视频| 亚洲欧美变态国产另类| 天天干视频在线观看| 日韩精品影音先锋| 国产一区二区三区中文字幕| 精品视频色一区| 在线免费观看国产精品| 岛国精品视频在线播放| 日韩久久久久久久久| 亚洲久本草在线中文字幕| 波多野结衣喷潮| 中文字幕欧美日本乱码一线二线| 老鸭窝一区二区| 337p粉嫩大胆色噜噜噜噜亚洲| 国产精品果冻传媒| 国产高清不卡一区| 欧美一级免费在线| 国产中文一区二区三区| 亚洲精品性视频| 久久aⅴ国产欧美74aaa| 女同激情久久av久久| 美女mm1313爽爽久久久蜜臀| 亚洲老女人av| 蜜桃传媒麻豆第一区在线观看| 在线免费av播放| 喷水一区二区三区| 一级片视频免费观看| 看国产成人h片视频| 热久久久久久久久| 国产尤物一区二区| 中文字幕第六页| 国产99精品国产| 国产精品第七页| www激情久久| 天天躁夜夜躁狠狠是什么心态| 中日韩av电影| 国产美女福利视频| 樱花草国产18久久久久| 精品视频久久久久| 偷窥少妇高潮呻吟av久久免费| 91精品国产乱码在线观看| 欧美性高潮在线| 国产99久久久久久免费看| 8v天堂国产在线一区二区| 精品人妻少妇嫩草av无码专区| 精品久久久久久久一区二区蜜臀| 亚洲AV无码国产精品午夜字幕| 亚洲国产女人aaa毛片在线| 巨骚激情综合| 色妞欧美日韩在线| 青青青草视频在线| 2019中文字幕在线| 91精品美女| 亚洲综合日韩中文字幕v在线| 国产精品对白| 日本一区美女| 中文字幕免费一区二区三区| 国产女大学生av| 麻豆精品一二三| 国产亚洲精品成人a| 2021中文字幕一区亚洲| www.日本高清视频| 亚洲精品日产精品乱码不卡| 久久久久久久久久久久久久av| 欧美日韩黄色一区二区| 高清毛片aaaaaaaaa片| 亚洲香蕉成视频在线观看| 超碰在线免费播放| 欧美与黑人午夜性猛交久久久| 欧美视频免费看| 黄色一区三区| 久久久久久久久久久久久久久久久久 | 91电影在线播放| 国内伊人久久久久久网站视频 | 欧美视频一区二区| 亚洲狼人综合网| 中文字幕在线日韩| 24小时免费看片在线观看| 国产日韩欧美成人| 精品一区免费| 国产玉足脚交久久欧美| 久久国产精品72免费观看| 国产 中文 字幕 日韩 在线| 国产精品短视频| 国产亚洲欧美在线精品| 亚洲第五色综合网| 久久国产精品一区| 国产精品久久久久77777| 青青操综合网| 免费高清一区二区三区| 狠狠色狠狠色合久久伊人| 毛茸茸多毛bbb毛多视频| 亚洲精品成a人| 97免费观看视频| 中文字幕亚洲一区二区三区五十路| 国产美女高潮在线观看| 91丨九色丨国产| 亚洲色图二区| 做a视频在线观看| 国产精品久久久久久久久果冻传媒| 亚洲影院在线播放| 亚洲国语精品自产拍在线观看| 青春草免费在线视频| 成人伊人精品色xxxx视频| 久久在线电影| 成人性生生活性生交12| 久久精品欧美一区二区三区麻豆| 国产精品500部| 亚洲成人精品久久久| 主播国产精品| 91久久久一线二线三线品牌| 天天精品视频| 一区二区在线免费看| 国产精品女主播av| 中文字幕一区二区免费| 尤物九九久久国产精品的分类| 欧洲一级精品| 色综合久久av| 日本不卡一区二区三区| 少妇视频在线播放| 欧美伊人久久久久久午夜久久久久| 欧美在线一卡| 国产99在线|中文| 精品视频久久| 国产精品区在线| 亚洲欧美日韩小说| 国产日韩一级片| 欧美激情网友自拍| 国产精品白丝av嫩草影院| www..com日韩| 久久久影视传媒| 最近中文字幕免费观看| 日韩中文字幕国产精品| 国产精品亚洲欧美一级在线| 国产精品夜夜夜爽张柏芝| 国产一区 二区 三区一级| 国产亚洲精品码| 日韩精品在线视频观看| 色8久久影院午夜场| 亚洲精品第一区二区三区| 精品一区二区免费在线观看| 欧美片一区二区| 日韩国产精品亚洲а∨天堂免| 视频在线日韩| 一区精品视频| 高清视频一区二区| 久久久精品福利| 日韩在线视频二区| 国产精品香蕉| 看欧美ab黄色大片视频免费| 国产精品不卡在线| 欧美 日韩 国产 成人 在线 91| 欧美在线精品免播放器视频| 欧美三级情趣内衣| 久久艹这里只有精品| 狠狠躁夜夜躁人人躁婷婷91| 午夜在线视频| 九九九九精品| 久久精品国产精品青草| 国产主播在线观看| 国产一区二区三区高清在线观看| 精品一区二区三区在线观看视频| 欧美成人三级在线视频| 欧美国产视频在线| 蜜桃av噜噜一区二区三区麻豆| 欧美在线视频网| 91国语精品自产拍| 国产精品无码一区二区三区免费| 欧美男男青年gay1069videost| 嗯啊主人调教在线播放视频| 亚洲电影一二三区| 成人国产精品免费| 一区不卡在线观看| 77777亚洲午夜久久多人| 亚洲国产老妈| 娇妻被老王脔到高潮失禁视频| 亚洲电影免费观看高清完整版在线观看 |