ORACLE分区表查询

mac2022-06-30  91

ORACLE分区表查询

 

假如 [分区表] 在字段 [createdate] 上进行分区,每个月为一个分区:2009年6月为分区P2009062009年7月为分区P2009072009年8月为分区P200908。。。执行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_ROWSPARTITION 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_ROWSPARTITION 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_ROWSPARTITION RANGE SINGLE        Partition start=2    Partition stop=2  TABLE ACCESS FULL            Partition start=2    Partition stop=2 posted on 2012-05-05 07:31  蓝红石 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/liuweihua/archive/2012/05/05/2484441.html

最新回复(0)