0
我在Visual Studio中,正在爲幾個表創建一個2列的組合索引。有2列:用戶ID在所有表中並充當外鍵;然後,每個表都有自己的密鑰來指代對象的部位,如電話,地址...就像這樣:複合索引:列的順序是否在sql server/linq到sql?
TablePhones:
PhoneID | UserID | PhonePrefix | PhoneNumber | PhoneExtention
TableAddresses:
AddressID | UserID | AddressStreet1 | AddressStreet2 | AddressCity...
注意,用戶可以有超過1個地址和1個多手機數。
我使用LINQ to SQL和where子句查詢得到的對象是這樣的:
read queries:
where x.UserID == TheUserID
update/delete queries:
where x.UserID == TheUserID && x.PhoneID = ThePhoneID
目前,主鍵是PhoneID和AddressID和我期待在PhoneID/UserID和AddressID/UserID上創建複合索引。數據庫中列的順序是否正常,或者是否應該將用戶ID移動到所有表的第一位。
感謝您的建議。
如果UserID不唯一?這是主鍵問題嗎? – frenchie 2012-02-15 00:12:05
我不確定我是否理解你的權利。你說你已經有一個主鍵。 – a1ex07 2012-02-15 00:18:30
如果您正在考慮重新設計表結構並使用複合主鍵,請考慮以下事項:如果您需要從另一個表中的這些表中引用記錄,則最好在(userId, PhoneId)和(UserId,AddressId)比擁有一個複合PK – a1ex07 2012-02-15 00:21:38