各位,查询分区表和普通查询有什么区别,
分区表的意义是什么?
一般多少数据才建立分区表

解决方案 »

  1.   

    1、简单地说:分区表就是一个表包含多个分区,每一个分区就好象是一个普通意义上的表。
    2、对大表管理更方便、可伸缩性好、查询效率更好(可以进行分区排除)。
    3、没有明确的定义,一般几十万数据至百万数据以上。
    更多:http://tianzt.blog.51cto.com/459544/171759
      

  2.   

    楼上两位能否在详细一点:
    比如一张表T
    select * from T 
    分区表B
    select * from B这两个查询有区别吗?分区表该怎么查效率才高呢?
      

  3.   


    假如 [分区表] 在字段 [createdate] 上进行分区,每个月为一个分区:
    2009年6月为分区P200906
    2009年7月为分区P200907
    2009年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_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
     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