成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

帶您深入了解Oracle臨時表

數(shù)據(jù)庫 Oracle
Oracle臨時表用于保存事務(wù)或會話期間的中間結(jié)果集,保存的數(shù)據(jù)只對當(dāng)前會話可見,所有會話都看不到其他會話的數(shù)據(jù)。

Oracle臨時表是一類特殊的表,Oracle臨時表(Temporary table)用于保存事務(wù)或會話期間的中間結(jié)果集。下面就為您詳細(xì)介紹Oracle臨時表相關(guān)的知識,供您參考。

臨時表中保存的數(shù)據(jù)只對當(dāng)前會話可見,所有會話都看不到其他會話的數(shù)據(jù);臨時表比常規(guī)表生成的redo少得多。不過,由于臨時表必須為其中包含的數(shù)據(jù)生成undo信息, 所以也會生成一定的redo。 UPDATE和DELETE會生成最多的undo; INSERT和SELECT生成的undo最少。

對于Oracle臨時表,運行時當(dāng)一個會話第一次在臨時表中放入數(shù)據(jù)時,才會為該會話創(chuàng)建一個臨時段。由于每個會話會得到其自己的臨時段(而不是一個現(xiàn)有段的一個區(qū)段),每個用戶可能在不同的表空間為其臨時表分配空間。

Oracle臨時表與其他關(guān)系數(shù)據(jù)庫中的臨時表類似,這樣區(qū)別只是:Oracle臨時表是“靜態(tài)”定義的。每個數(shù)據(jù)庫只創(chuàng)建一次臨時表,而不是為數(shù)據(jù)庫中的每個存儲過程都創(chuàng)建一次。在Oracle中,臨時表一定存在,它們作為對象放在數(shù)據(jù)字典中,但是在會話向臨時表中放入數(shù)據(jù)之前,臨時表看上去總是空。由于臨時表是靜態(tài)定義的,所以你能創(chuàng)建引用臨時表的視圖,還可以創(chuàng)建存儲過程使用靜態(tài)SQL來引用臨時表,等等。臨時表可以是基于會話的(臨時表中的數(shù)據(jù)可以跨提交存在,即提交之前仍然存在,但是斷開連接后再連接后再連接時數(shù)據(jù)就沒有了),也可以是基于事務(wù)的(提交之后數(shù)據(jù)就消失)。下面這個例子顯示了這兩種不同的臨時表。我使用SCOTT.EMP表作為一個模板:

  1. ops$tkyte@ORA10G> create global temporary table temp_table_session  
  2.  
  3. 2 on commit preserve rows  
  4.  
  5. 3 as  
  6.  
  7. 4 select * from scott.emp where 1=0 
  8.  
  9. 5 /  
  10.  
  11. Table created.  

ON COMMIT PRESERVE ROWS 子句使得這是一個基于會話的臨時表。在我的會話斷開連接之前,或者我通過一個DELETE或TRUNCATE物理地刪除行之前,這些行會一直存在于這個臨時表中。

  1. ops$tkyte@ORA10G> create global temporary table temp_table_transaction  
  2.  
  3. 2 on commit delete rows  
  4.  
  5. 3 as  
  6.  
  7. 4 select * from scott.emp where 1=0 
  8.  
  9. 5 /  
  10.  
  11. Table created.  

ON COMMIT DELETE ROWS 子句使得這是一個基于事務(wù)的臨時表。我的會話提交時,臨時表中的行就不見了。只需把分配給這個表的臨時區(qū)段交回,這些行就會消失,在臨時表的自動清除過程中不存在開銷。

如果你曾在SQL Server和/或 Sybase中用過臨時表,現(xiàn)在所要考慮的主要問題是:不應(yīng)該執(zhí)行SELECT X, Y, Z INTO #TEMP FROM SOME_TABLE來動態(tài)創(chuàng)建和填充一個臨時表,而應(yīng)該:

l 將所有全局臨時表只創(chuàng)建一次,作為應(yīng)用安裝的一部分,就像是創(chuàng)建永久表一樣。

l 在你的過程中,只需執(zhí)行INSERT INTO TEMP(X, Y, Z) SELECT X, Y, Z FROM SOME_TABLE。

歸根結(jié)底,這里的目標(biāo)是:不要在運行時在你的存儲過程中創(chuàng)建表。這不是Oracle 中使用臨時表的正確做法。DDL是一種代價昂貴的操作:你要全力避免在運行時執(zhí)行這種操作。一個應(yīng)用的臨時表應(yīng)該在應(yīng)用安裝期間創(chuàng)建,絕對不要在運行時創(chuàng)建。

Oracle臨時表可以有永久表的許多屬性。它們可以有觸發(fā)器、檢查約束、索引等。但永久表的某些特性在臨時表中并不支持,這包括:

l 不能有引用完整性約束。臨時表不能作為外鍵的目標(biāo),也不能在臨時表中定義外鍵。

l 不能有 NESTED TABLE類型的列。 在 Oracle 9i及以前版本中, VARRAY類型的列也不允許;不過Oracle 10g中去掉了這個限制。

l 不能是 IOT。

l 不能在任何類型的聚簇中。

l 不能分區(qū)。

l 不能通過ANALYZE表命令生成統(tǒng)計信息。

在所有數(shù)據(jù)庫中,臨時表的缺點之一是優(yōu)化器不能正常地得到臨時表的真實統(tǒng)計。(
 
 

 

【編輯推薦】

oracle查詢用戶所有表的語句

Oracle with語句的用法

常見的ORACLE數(shù)據(jù)類型介紹

Oracle并行查詢方式的利用

oracle并行查詢一列的實現(xiàn)

 

 

責(zé)任編輯:段燃 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-10-15 11:27:21

Mysql臨時表

2010-11-19 15:53:28

oracle管理表空間

2010-10-29 14:57:12

Oracle歸檔模式

2010-10-26 11:28:33

ORACLE運行方式

2010-10-28 10:19:29

oracle權(quán)限管理

2010-10-29 10:04:27

2010-10-25 14:09:01

Oracle觸發(fā)器

2010-11-16 14:43:25

Oracle SQL計

2010-10-25 16:29:45

Oracle隨機(jī)數(shù)產(chǎn)生

2010-10-11 16:45:18

MySQL ifnul

2010-10-14 11:25:39

2010-10-14 11:33:42

MySQL用戶

2010-10-09 14:08:52

MYSQL Cast函

2010-10-12 15:30:04

MySQL權(quán)限管理

2010-10-15 15:32:06

Mysql外部鎖定

2010-11-11 13:39:57

SQL連接查詢

2010-11-22 11:09:00

MySQL索引類型

2010-10-19 13:26:45

SQL Server事

2010-09-28 10:46:39

sql字段類型

2010-11-02 11:02:48

DB2物化查詢表
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 色综合一区二区 | 免费观看av | av免费看在线 | 91免费版在线| 成人深夜小视频 | 成人亚洲综合 | 亚洲高清视频一区 | 国产重口老太伦 | 亚洲一区二区三区免费 | 亚洲欧洲av在线 | 久久久久亚洲精品 | 国产综合久久 | 欧美一区二区在线 | 国产精品一区二区久久 | 亚洲国产小视频 | 99成人精品| 中文字幕一区二区三区在线观看 | 国产精品福利视频 | 一级黄片一级毛片 | 日本粉嫩一区二区三区视频 | 国产成人一区二区三区精 | 日韩欧美在线一区 | 国产美女福利在线观看 | 久草免费在线视频 | 亚洲欧美在线一区 | 91精品国产综合久久婷婷香蕉 | 亚洲国产一区二区视频 | 成人天堂噜噜噜 | 亚洲一区二区在线播放 | 七七婷婷婷婷精品国产 | 久久久www成人免费无遮挡大片 | 97碰碰碰| 国产成人99久久亚洲综合精品 | 国产精品1区2区3区 欧美 中文字幕 | 丁香婷婷成人 | 91综合网 | 欧美国产日韩一区二区三区 | 一级a爱片性色毛片免费 | 成人国产精品久久 | 欧美日韩国产精品一区二区 | 午夜免费观看 |