找回密码
 注册账户
查看: 282|回复: 0

Oracle分区表全分区扫描问题

[复制链接]
admin 发表于 2011-12-20 00:25:32 | 显示全部楼层 |阅读模式
[导读]分区表:将一个大表根据某种规则分成多个小表,从而提高检索效率。
分区表:将一个大表根据某种规则分成多个小表,从而提高检索效率。
查询分区表sql
Sql代码
select user_tables.table_name
from user_tables
where user_tables.partitioned = 'YES'
通过以上命令可查询出数据库中登陆用户下的全部分区表。
查询分区表分区字段sql
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:
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 = '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
您需要登录后才可以回帖 登录 | 注册账户

本版积分规则

存档|黑屋|手机|网络实验室 本站服务器由美国合租以及IDCLayer国际数据提供!!!

GMT+8, 2026-6-15 20:02 , Processed in 0.010187 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表