我們正在設計一個數據庫,我需要考慮一些FK(外鍵) 約束。但不限於 正式結構和規範化。 只有當它提供任何 性能或可擴展性優勢時,我們纔會去做。SQL Server外鍵約束好處
我一直在通過一些有趣的文章和谷歌搜索的實際好處。這裏有一些鏈接:
http://www.mssqltips.com/tip.asp?tip=1296
我想知道更多關於FK的利益(除了正式的結構以及著名的級聯刪除\更新)。
默認情況下FK不是「索引」的,因此索引FK時需要考慮什麼?
如何處理映射爲外鍵的可空字段 - 這是允許的嗎?
除了索引,這是否有助於優化SQL-Server中的查詢執行計劃?
我知道還有更多,但我更喜歡專家對此發表看法。請指導我。
我一直在處理一些有數百萬條記錄的數據庫。在數據庫及其克隆之間導入數據很多,然後在Web應用程序環境中使用該克隆。 那麼,我知道保持PK索引自動,所以它有助於加快數據訪問。現在,從這個討論中我得出,如果我在我的SQL查詢中使用JOIN,那麼我會使用FK並對其進行索引以使JOIN操作有效。 – 2009-10-29 14:21:56
例如,我有一個表OrgMaster(包含所有組織記錄),那麼我有一個BookingMaster表(包含所有預訂記錄)。現在,OrmaMaster.Id被「引用」爲BookingMaster.OrgId。所以,我有一個用於OrgId-Id關係的FK,並且爲了在這兩個表格之間的任何JOIN操作獲得更好的性能,我都會'索引'它。我是否正確地得到它?
以上所有 - 以額外的空間和時間開銷爲代價(用FK在表中插入記錄)。 – 2009-10-29 14:22:32
我想請你給我一個要考慮的要點列表,比如 - - FK索引會吃掉太多的空間和時間,因爲表增長了幾百萬條記錄? - 在這種情況下,是否值得去FK索引「每次」? - 在什麼情況下shud我不適用FK或指數,或兩者都不它的(當然我可以處理從應用程序很多) - 任何其他棘手用來加快JOIN或其他類似的費時查找? – 2009-10-29 14:23:06