这是我的简单场景: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