1.范围分区时,如果查询条件中包含了用作分区的列的值,那么是不是说我在sql语句中就无需指定分区了?也就是说,如果我在sql语句中不想指定任何分区的话,该如何做呢?
2.在建立分区表时,是否一定要将每个分区指定为不同的表空间?如果不指定,统一用一个的话,效率如何?
3.用范围-散列方式的复合分区方式,是否速度会比单一的范围分区好些?为何?多谢了!

解决方案 »

  1.   

    2.在建立分区表时,是否一定要将每个分区指定为不同的表空间?如果不指定,统一用一个的话,效率如何?
    在建立分区时,如果使用的是hash的方式,不必对每个分区指定表空间,系统会循环利用你指定的表空间。这种方式的效率也不一定就比手动为每个分区指定表空间低。
    3.用范围-散列方式的复合分区方式,是否速度会比单一的范围分区好些?为何?
    不一定,使用哈西函数进行散列,你就不能手动定义那些数据应该存到那个分区去。删除和查询的时候,有可能会造成麻烦。我觉得还是需要根据需求,合理的使用分区策略。
      

  2.   

    怎么说呢?
    如果不写的话,应该是先全件取出记录,然后在通过where条件筛选。
    这样的话,通俗点说执行到where的时候,表的全集已经被取出来了。还谈什么分区呢?
    如果指定了分区,那么只取出指定分区的全部数据,oracle通过这个来有效的减少检索范围。
    应该这样解释吧!
      

  3.   

    分区的时候要指定用什么值来分区的,常见的有时间段
    当你用时间段来查找的时候,oracle会自动查找where条件里面时间段所在分区的数据。
    当然你也可以指定查哪些分区的数据。
      

  4.   

    如果是Oracle9i2以上的版本,where条件如果限制了在一个分区之内,则自然不会去搜索其它的分区.指定了分区,自然比不指定来的好,这个是显而易见的,至少在绝大部分的情况下是这样的.