我的架构中有一个表,它对两列有唯一约束:
UNIQUE(Column1, Column2)
SQlite文档告诉我这个creates a unique index on these columns。我的问题是,是否会在其中一列上显式创建索引,比如说Column1
,是多余的?
答案 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的索引。