我应该始终索引连接表的所有条目吗?
我认为将两个列索引在一起并没有多大好处,每列应该有自己的索引?
答案 0 :(得分:3)
假设您正在谈论我通常做的多对多关系表
CREATE TABLE FooBar
(
FooId int NOT NULL REFERENCES Foo(FooId),
BarId int NOT NULL REFERENCES Bar(BarId),
PRIMARY KEY (FooId, BarId ),
UNIQUE (BarId, FooId )
)
理由是这两者都确保没有添加重复的行,并且(在SQL Server和可能所有的RDBMS中)隐式地在FooId, BarId
和BarId,FooId
上创建一个复合索引,通常你会想要向任一方向寻求获得Bar
的全部Foo
,反之亦然。
创建的两个复合索引将涵盖这些查询。