Oracle Composite Range-Hash分区

时间:2018-04-05 14:56:08

标签: oracle partitioning

我正在尝试将我的表分区如下

CREATE  TABLE ABC(
id VARCHAR2(100) primary key,
datecreated DATE)
PARTITION BY RANGE (datecreated) INTERVAL (NUMTODSINTERVAL(1,'DAY'))
  SUBPARTITION BY HASH (ID) SUBPARTITIONS 4
 (PARTITION lessthan2018  VALUES LESS THAN (TIMESTAMP' 2018-01-01 00:00:00') );

如果我使用WHERE子句和#34; ID"性能会提高吗?如果我按日期分区,性能是否相同。它会执行相同的操作,因为ID已经是主键吗?

1 个答案:

答案 0 :(得分:2)

如果$this->get('doctrine.orm.entity_manager'); 是主键,那么您将在该列上拥有唯一的全局索引,并且分区不会有任何区别,因为索引已经将您带到指定行的物理地址。

此外,删除,截断或交换分区将使索引无效,除非您指定id子句。

如果update global indexes不是PK,而是像产品类型或区域代码那样非唯一的东西,那么只查询没有任何日期的那个列就需要检查每个分区。