我在Oracle 11g中有一个表 Customer_Chronics
. 该表有三个关键列,如下所示:
-
branch_code
-
customer_id
-
期间
我已按表 branch_code
列表进行分区,现在我陷入了两难境地 . 哪个更好:
-
在Customer_Chronics上创建唯一索引indexNumberOne(PERIOD,CUSTOMER_ID);
-
在Customer_Chronics上创建唯一索引indexNumberTwo(branch_code,PERIOD,CUSTOMER_ID);
period, customer_id
实际数据必须是唯一的 . 如果我只在这两列上放置一个唯一索引,Oracle会在插入新记录时检查表中的所有分区吗?
2 回答
强制唯一性的唯一方法是对感兴趣的列进行唯一约束 . 所以这是你的第一选择 . 在这种情况下,数据库将检查所有分区中的所有值 . 但是因为它是一个独特的索引,不管 table 有多大(如果这是你关心的话),也不应该花太长时间 .
是的,如果仅在这两列上放置唯一索引,Oracle将创建一个全局索引并检查所有分区 . 这是我在某个时候面临的挑战之一,因为我们更喜欢大表的本地索引(小表应该没问题) .