两列上的唯一索引是否意味着每个列都有索引?

时间:2010-07-01 10:56:40

标签: sql sqlite indexing

我的架构中有一个表,它对两列有唯一约束:

UNIQUE(Column1, Column2)

SQlite文档告诉我这个creates a unique index on these columns。我的问题是,是否会在其中一列上显式创建索引,比如说Column1,是多余的?

2 个答案:

答案 0 :(得分:4)

对你的例子是肯定的,对你的问题不是。

2列上的复合索引会使第一个上的附加索引冗余。但是,第二个列上的索引可能仍然有用。

但是如果每个列本身都是唯一的,那么您可能不需要复合索引。你可能想看一下。

索引太多并不总是一个明显的问题。但浪费资源,特别是出于多余目的,总是很糟糕。

答案 1 :(得分:4)

任何一个包含多个列的索引也可以作为较少相同列的索引,前提是它们都是索引开头的所有列。

让我举个例子。这些列的索引:

a, b, c, d, e, f

也可以作为以下列组合的索引:

a, b, c, d, e
a, b, c, d
a, b, c
a, b
a

因此,对于您的问题:您拥有的索引也可以作为Column1的索引,但不能作为Column2的索引。