我应该始终索引连接表的所有条目吗?

时间:2013-07-28 10:54:01

标签: sql

我应该始终索引连接表的所有条目吗?

我认为将两个列索引在一起并没有多大好处,每列应该有自己的索引?

1 个答案:

答案 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, BarIdBarId,FooId上创建一个复合索引,通常你会想要向任一方向寻求获得Bar的全部Foo,反之亦然。

创建的两个复合索引将涵盖这些查询。