我有一系列有關SQL,SQL 2005中的鍵,索引和約束的問題。我一直在使用SQL大約4年,但我從來沒有能夠獲得有關此主題的明確答案,並且博客文章中總是存在矛盾的信息等。我創建和使用的大多數時間表都只有一個Identity列是主鍵,其他表通過外鍵指向它。SQL 2005:鍵,索引和約束問題
在連接表中,我沒有標識並在外鍵列上創建複合主鍵。以下是我對當前信仰的一系列陳述,這可能是錯誤的,如果是這樣,請糾正我,以及其他問題。
所以這裏有雲:
據我瞭解一個聚集和非聚集索引的區別(不管它是唯一與否)是聚集索引會影響表中的數據的物理順序(因此在表中只能有一個),而非聚集索引構建樹數據結構。在創建索引時,爲什麼我應該關心「羣集」與「非羣集」?我應該什麼時候使用其中一種?我被告知插入和刪除非聚集索引很慢,因爲樹需要「重建」。我認爲聚集索引不會以這種方式影響性能?
我看到主鍵實際上只是聚集索引是唯一的(他們必須被聚集?)。主鍵與集羣唯一索引有什麼特別之處?
我也見過約束,但我從來沒有用過它們或真的看過它們。有人告訴我,約束的目的是爲了強制數據完整性,而索引是針對性能的。我也讀過約束作爲索引來實現,因此它們是「相同的」。這聽起來不錯,對我來說。約束如何與索引不同?