分區表將一個大表根據某種規則分成多個小表從而提高檢索效率
查詢分區表sql
Sql代碼
select user_tablestable_name
from user_tables
where user_tablespartitioned = YES
通過以上命令可查詢出數據庫中登陸用戶下的全部分區表
查詢分區表分區字段sql
Sql代碼
select atable_name apartitioned bpartition_count lumn_name
from user_tables a user_part_tables b user_part_key_columns c
where atable_name = btable_name
and btable_name = cname
and cname = &table_name;
通過以上命令可查詢出某個分區表中的分區字段查詢條件中的表名需要大寫
知道了那些是分區表和分區字段後就可以分析具體某個含有分區表sql的執行計劃
看執行了表的全分區掃描還是單分區掃描它們的執行效率相差很大
通過cost值可以看出下面使用事例詳細介紹一下
典型案例
Sql代碼
select arc_e_cons_prc_amtmp_name
arc_e_cons_snapelec_addr
from arc_e_cons_prc_amt
sa_org
arc_e_cons_snap
e_cat_prc
sa_c_trade_type
where (arc_e_cons_prc_amtCALC_ID = arc_e_cons_snapCALC_ID and
arc_e_cons_prc_amtORG_NO = sa_orgORG_NO and
arc_e_cons_prc_amtPRC_CODE = e_cat_prcPRC_CODE and
arc_e_cons_prc_amtPARA_VN = e_cat_prcPARA_VN and
arc_e_cons_prc_amtTRADE_TYPE_CODE = sa_c_trade_typeTRADE_CODE)
and (arc_e_cons_prc_amtYM >= and
arc_e_cons_prc_amtYM <= and
arc_e_cons_prc_amtORG_NO = )
修改為如下sql:
Sql代碼
select arc_e_cons_prc_amtmp_name
arc_e_cons_snapelec_addr
from arc_e_cons_prc_amt
sa_org
arc_e_cons_snap
e_cat_prc
sa_c_trade_type
where (arc_e_cons_prc_amtCALC_ID = arc_e_cons_snapCALC_ID and
arc_e_cons_prc_amtORG_NO = sa_orgORG_NO and
arc_e_cons_prc_amtPRC_CODE = e_cat_prcPRC_CODE and
arc_e_cons_prc_amtPARA_VN = e_cat_prcPARA_VN and
arc_e_cons_prc_amtTRADE_TYPE_CODE = sa_c_trade_typeTRADE_CODE)
and (arc_e_cons_prc_amtYM >= and
arc_e_cons_prc_amtYM <= and
arc_e_cons_prc_amtORG_NO = )
and arc_e_cons_snapORG_NO = arc_e_cons_prc_amtORG_NO
注上面的sql中存在兩個分區表arc_e_cons_snap和arc_e_cons_prc_amt
查詢條件中要有兩個表的分區字段條件
Labels parameters
From:http://tw.wingwit.com/Article/program/Oracle/201311/17248.html