2013-06-18 59 views
2

我正在使用Oracle數據庫,我有一個客戶記錄表,並且希望將唯一鍵約束放在多個varchar2列上。像多個列的唯一約束具有性能問題 - Oracle

CUST_ID (Number)

CUST_Name(varchar2), 

Cust_N.I.C_NO(varchar2)將唯一的密鑰。

當通過表格6i插入新記錄時,如果出現ORA-00001錯誤,用戶將被通知它是一個DUPLICATED記錄。

當本表中的記錄超過50000或更多時,請告知我是否會有任何數據庫性能問題。

如果這不是避免插入重複記錄的好習慣,那麼請建議其他方法。

關於。

+0

你列出了三列,並說他們「會做出一個唯一的關鍵」。你的意思是三個獨特的鑰匙?因爲他們似乎是一個複合鍵的奇怪候選人。 – APC

+0

這絕對是避免插入重複記錄的最佳方法。 –

回答

7

通過索引強制執行唯一約束。所以在執行過程中還會有額外的讀取。但是,與解決數據庫中重複鍵所產生的性能影響相比,約束的性能影響是最小的。更不用說這種數據損壞的業務影響了。

此外,50000行是玩具大小的桌子。嚴重的是,你將無法測量有和沒有約束的插入的差異。

+0

非常感謝APC。非常感激 – user1115284