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