2

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

  • 分行代码
  • 客户ID
  • 时期

我已经按列表按表分区branch_code,现在我陷入了困境。哪个更好:

  1. 在 Customer_Chronics (PERIOD, CUSTOMER_ID) 上创建唯一索引 indexNumberOne;
  2. 在 Customer_Chronics (branch_code, PERIOD, CUSTOMER_ID) 上创建唯一索引 indexNumberTwo;

实际数据必须是唯一的period, customer_id。如果我只在这两列上放置唯一索引,Oracle 会在插入新记录时检查表上的所有分区吗?

4

2 回答 2

3

强制唯一性的唯一方法是对感兴趣的列使用唯一约束。所以这是你的第一个选择。在这种情况下,数据库将检查所有分区中的所有值。但是,因为它是一个唯一索引,无论表有多大(如果这是您所关心的),都不应该花费太长时间。

于 2012-08-10T07:24:56.377 回答
1

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

于 2013-03-25T06:57:26.563 回答