我在visual studio中,希望在几个表的2列上创建一个复合索引。共有2列:UserID位于所有表中并充当外键;那么,每个表都有自己的键来引用对象的各个部分,比如电话,地址......就像这样:
TablePhones:
PhoneID | UserID | PhonePrefix | PhoneNumber | PhoneExtention
TableAddresses:
AddressID | UserID | AddressStreet1 | AddressStreet2 | AddressCity...
请注意,用户可以拥有多个地址和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上创建复合索引。数据库中列的顺序是否正常,或者我应该将UserID移动到所有表的第一个位置。
感谢您的建议。
答案 0 :(得分:2)
表格中的列顺序无关紧要;至少对于SQLServer。重要的是在索引中列出了哪些订单字段。有关前导列[s]条件的查询将从索引中获益。
如果主键是群集的,则只能在userID
创建索引,不需要复合键。无论如何,它将引用聚簇键。