Oracle分区表的唯一索引

时间:2012-08-10 05:56:45

标签: oracle indexing oracle11g

我在Oracle 11g中有一个表Customer_Chronics。  该表有三个关键列,如下所示:

  • branch_code
  • CUSTOMER_ID

我按照branch_code列表的表格进行了分区,现在我陷入了两难境地。哪个更好:

  1. 在Customer_Chronics上创建唯一索引indexNumberOne(PERIOD,CUSTOMER_ID);
  2. 在Customer_Chronics上创建唯一索引indexNumberTwo(branch_code,PERIOD,CUSTOMER_ID);
  3. period, customer_id实际数据必须是唯一的。如果我只在这两列上放置一个唯一索引,Oracle会在插入新记录时检查表中的所有分区吗?

2 个答案:

答案 0 :(得分:2)

强制唯一性的唯一方法是对感兴趣的列进行唯一约束。所以这是你的第一选择。在这种情况下,数据库将检查所有分区中的所有值。但是因为这是一个独特的索引,不管桌面有多大都不会花太长时间(如果这是你关注的话)。

答案 1 :(得分:1)

是的,如果仅在这两列上放置唯一索引,Oracle将创建一个全局索引并检查所有分区。这是我在某个时候面临的挑战之一,因为我们更喜欢大表的本地索引(小表应该没问题)。