首頁>
4
回覆列表
  • 1 # 小豆豆7771

    1,普通表(heap table):適合大部分設計場景,有優點也有缺點。

    優點:

    a,語法簡單方便

    b,適合大部分場景

    缺點:

    a,更新日誌開銷較大

    b,Delete無法釋放空間(HWM High Water Mark不下降)

    c,表記錄太大檢索太慢

    d,索引回表讀開銷很大

    e,即便有序插入,也很難保證有序讀出

    2,全局臨時表:適合接口表設計

    優點:

    a,高效刪除

    b,產生很少的日誌

    c,不同的SESSION獨立,不產生鎖

    缺點:

    a,語法特別

    b,數據無法得到有效的保護

    全局臨時表分兩類:

    一個是基於會話的全局臨時表(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;

    3,分區表:尤其適合日誌表,非常大的表

    優點:

    a,有效的分區消除 (分區裁剪)

    b,高效的記錄清理(即可以對某一個分區進行truncate)

    c,高效的記錄轉移(分區交換)

    缺點:

    a,語法複雜

    b,分區過多對系統有一定的影響

    4,索引組織表:適合極少更新的表

    優點:

    a,表就是索引,可以避免回表

    缺點:

    a,語法複雜

    b,更新開銷較大

    5,蔟表:使用頻繁關聯查詢的多表

    優點:

    a,可以減少或避免排序

    缺點:

    a,語法複雜

    b,表更新開銷大