一、普通表(heap table):適合大部分設計場景,有優點也有缺點。
優點:
1.語法簡單方便
2.適合大部分場景
缺點:
1.更新日志開銷較大
2.Delete無法釋放空間(HWM High Water Mark不下降)
3.表記錄太大檢索太慢
4.索引回表讀開銷很大
5.即便有序插入,也很難保證有序讀出
二、全局臨時表:適合接口表設計
優點:
1.高效刪除
2.產生很少的日志
3.不同的SESSION獨立,不產生鎖
缺點:
1.語法特別
2.數據無法得到有效的保護
全局臨時表分兩類:
一個是基於會話的全局臨時表(on commit preserve rows),一個是基於事務的全局臨時表(on commit delete rows),下面就是創建的例子:
create global temporary table T_TMP_SESSION on commit preserve rows as select * from dba_objects; create global temporary table T_TMP_TRANSACTION on commit delete rows as select * from dba_objects;
三、分區表:尤其適合日志表,非常大的表
優點:
1.有效的分區消除 (分區裁剪)
2.高效的記錄清理(即可以對某一個分區進行truncate)
3.高效的記錄轉移(分區交換)
缺點:
1.語法復雜
2.分區過多對系統有一定的影響
四、索引組織表:適合極少更新的表
優點:
1.表就是索引,可以避免回表
缺點:
1.語法復雜
2.更新開銷較大
五、蔟表:使用頻繁關聯查詢的多表
優點:
1.可以減少或避免排序
缺點:
1.語法復雜
2.表更新開銷大