這是我的簡單場景:SQL索引在兩列
我有一個Users表和一個Locations表。 一個用戶可以與許多地方所以我有一個用戶位置表,如下所示:現在
ID (int-Auto Increment) PK
UserID (Int FK to the Users table)
LocID (Int FK to the Locations table)
中,ID是它在默認情況下在SQL-服務器索引的PK。我有點困惑的另外兩列:
OPT 1: IX_UserLocation_UserID_LocID
OR
OPT 2: Shud Shud我同時在列樣定義索引我定義了兩個單獨的索引,如:IX_UserLocation_UserID & IX_UserLocation_LocID
請原諒我,如果兩者都一樣 - 在這種情況下請解釋。如果不是 - 哪一個更好,爲什麼?
您是否真的需要在聯結表中自動遞增代理'id'字段?這是爲了什麼?我會在2 FK列上創建一個複合主鍵。將針對該表執行哪些查詢?他們會通過'user','location'還是兩者來查找? – 2011-05-24 13:26:25
謝謝你們。只是供參考 - ID列是我們的傳統,我們將其保留在所有表格中,在大多數地方它用於唯一記錄標識符的目的。我知道這裏UserID + LocID可以是一個複合PK,但爲了簡化和標準化,我們保留ID字段。如果這不是令人信服的 - 現在忘記ID鑰匙! – 2011-05-31 14:44:41