2012-07-10 176 views
2

我有一個需要兩行唯一的表。他們很可能會定期加入,所以我可能需要在這些行上進行索引。DB2唯一約束,唯一索引和性能

我檢查了Unique constraintUnique Index上的Infocenter。

我想知道差異和性能的影響。兩者似乎都創建了一個索引。唯一索引允許一個空值。還有其他重要的區別嗎?

這些索引是否可以提高查詢性能,還是僅實施唯一性?我應該添加一個額外的索引出於性能原因,還是將獨特的索引足夠好?不幸的是,我還沒有足夠的測試數據來試用它。

+0

您的唯一約束鏈接的第一行:「唯一約束確保一組列中的值*是......」 - 那麼您從哪裏得到「僅允許一列」? – 2012-07-11 07:08:49

+0

@Damien_The_Unbeliever嗯。再深入一看[ALTER TABLE語句](http://pic.dhe.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=%2Fcom.ibm.db2.luw.sql.ref。 doc%2Fdoc%2Fr0000888.html)你可能是對的。 – 2012-07-11 07:17:56

回答

2

唯一約束或唯一索引沒有性能差異,任何人都可以。在查詢處理期間,DB2優化器會自動獲取爲維護唯一約束而創建的索引。

1

您將在此主題中找到解釋:http://bytes.com/topic/db2/answers/185707-difference-between-unique-constraint-unique-index

釋在一個報價:

唯一索引是一個物理的東西,而唯一約束是數據建模 結構。如前所述,唯一約束是通過添加唯一索引(並且另外需要NOT NULL條件)實現的 。

+0

其實我已經通過google找到了這個鏈接。它雖然沒有回答性能方面的問題,但我不確定05年的這些信息是否仍然是最新的。現在,外鍵的獨特約束似乎仍然適用。 – 2012-07-10 10:23:39