2012-08-10 87 views
1

我在Oracle 11g中有一個表Customer_Chronics。 該表有三個鍵列,如下圖所示:Oracle分區表的唯一索引

  • branch_code
  • CUSTOMER_ID
  • 週期

我已經表分區由branch_code名單,現在我有困境。哪個更好:

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

實際數據必須是唯一的period, customer_id。如果我只在這兩列上設置唯一索引,Oracle會在插入新記錄時檢查表上的所有分區?

回答

2

執行唯一性的唯一方法是對感興趣列的唯一約束。所以這是你的第一選擇。數據庫將檢查所有分區的所有值。但是,無論表格有多大(如果這是您的擔憂),它都是一個獨特的索引,不應該花太長時間。

1

是的,如果你只在這兩列上設置唯一索引,Oracle會創建一個全局索引並檢查所有分區。這是我有時面臨的挑戰之一,因爲我們更喜歡本地索引大表(小表應該是好的)。