设为首页 加入收藏

TOP

ORACLE分区表的查询
2014-11-24 02:42:17 来源: 作者: 【 】 浏览:0
Tags:ORACLE 分区表 查询

ORACLE分区表的查询
假如 [分区表] 在字段 [createdate] 上进行分区,每个月为一个分区:
2009年6月为分区P200906
2009年7月为分区P200907
2009年8月为分区P200908
。。。
www.2cto.com
执行SQL 使用分区键检索:
select*from 分区表 t where createdate > to_date('2009-07-12','yyyy-mm-dd') and createdate < to_date('2009-08-12','yyyy-mm-dd')
执行计划如下,使用分区键进行索引,会自动在数据存在的区进行检索。因为开始区为2,结束区为3,一目了然。
SELECT STATEMENT, GOAL = ALL_ROWS
PARTITION RANGE ITERATOR Partition start=2 Partition stop=3
TABLE ACCESS FULL Partition start=2 Partition stop=3
执行SQL 不使用分区键检索:
select*from 分区表 t where sms_report_date > to_date('2009-07-12','yyyy-mm-dd') and sms_report_date < to_date('2009-08-12','yyyy-mm-dd')
执行计划如下:没有使用分区键进行检索,那么则会查询全部的表分区。因为要查询的数据就在2和3分区上,其它的分区数据也被读取了,增大了 数据库压力,效率低下。
SELECT STATEMENT, GOAL = ALL_ROWS www.2cto.com
PARTITION RANGE ALL Partition start=1 Partition stop=31
TABLE ACCESS FULL Partition start=1 Partition stop=31
执行SQL 指定使用分区:
select*from 分区表 partition(P200907) t where sms_report_date > to_date('2009-07-12','yyyy-mm-dd') and sms_report_date < to_date('2009-08-12','yyyy-mm-dd')
执行计划如下:
SELECT STATEMENT, GOAL = ALL_ROWS
PARTITION RANGE SINGLE Partition start=2 Partition stop=2
TABLE ACCESS FULL Partition start=2 Partition stop=2
作者 蓝红石
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Oracle表分区之复合分区 下一篇RHEL 5安装Oracle 11g

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: