oracle 全表扫描 分区,oracle分区表全分区扫描问题
分區表:將一個大表根據某種規則分成多個小表,從而提高檢索效率。
查詢分區表sql
select user_tables.table_name
from user_tables
where user_tables.partitioned = 'YES'
通過以上命令可查詢出數據庫中登陸用戶下的全部分區表。
查詢分區表分區字段sql
select a.table_name, a.partitioned, b.partition_count, c.column_name
from user_tables a, user_part_tables b, user_part_key_columns c
where a.table_name = b.table_name
and b.table_name = c.name
and c.name = '&table_name';
通過以上命令可查詢出某個分區表中的分區字段,查詢條件中的表名需要大寫。
知道了那些是分區表和分區字段后,就可以分析具體某個含有分區表sql的執行計劃,
看執行了表的全分區掃描、還是單分區掃描,它們的執行效率相差很大,
通過cost值可以看出,下面使用事例詳細介紹一下。
典型案例1:
select arc_e_cons_prc_amt.mp_name,
arc_e_cons_snap.elec_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_amt.CALC_ID = arc_e_cons_snap.CALC_ID and
arc_e_cons_prc_amt.ORG_NO = sa_org.ORG_NO and
arc_e_cons_prc_amt.PRC_CODE = e_cat_prc.PRC_CODE and
arc_e_cons_prc_amt.PARA_VN = e_cat_prc.PARA_VN and
arc_e_cons_prc_amt.TRADE_TYPE_CODE = sa_c_trade_type.TRADE_CODE)
and (arc_e_cons_prc_amt.YM >= '200809' and
arc_e_cons_prc_amt.YM <= '200811' and
arc_e_cons_prc_amt.ORG_NO = '2340203')
修改為如下sql:
select arc_e_cons_prc_amt.mp_name,
arc_e_cons_snap.elec_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_amt.CALC_ID = arc_e_cons_snap.CALC_ID and
arc_e_cons_prc_amt.ORG_NO = sa_org.ORG_NO and
arc_e_cons_prc_amt.PRC_CODE = e_cat_prc.PRC_CODE and
arc_e_cons_prc_amt.PARA_VN = e_cat_prc.PARA_VN and
arc_e_cons_prc_amt.TRADE_TYPE_CODE = sa_c_trade_type.TRADE_CODE)
and (arc_e_cons_prc_amt.YM >= '200809' and
arc_e_cons_prc_amt.YM <= '200811' and
arc_e_cons_prc_amt.ORG_NO = '2340203')
and arc_e_cons_snap.ORG_NO = arc_e_cons_prc_amt.ORG_NO
注:上面的sql中存在兩個分區表arc_e_cons_snap和arc_e_cons_prc_amt,
查詢條件中要有兩個表的分區字段條件。
Labels parameters
總結
以上是生活随笔為你收集整理的oracle 全表扫描 分区,oracle分区表全分区扫描问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle0数据库论文总结,大学ora
- 下一篇: 【RabbitMQ】6、rabbitmq