【发布时间】:2010-07-01 10:56:40
【问题描述】:
我的架构中有一个表,它对两列具有唯一约束:
UNIQUE(Column1, Column2)
SQlite 文档告诉我这个creates a unique index on these columns。我的问题是,这是否会在其中一个列上显式创建索引,比如Column1,是多余的吗?
【问题讨论】:
我的架构中有一个表,它对两列具有唯一约束:
UNIQUE(Column1, Column2)
SQlite 文档告诉我这个creates a unique index on these columns。我的问题是,这是否会在其中一个列上显式创建索引,比如Column1,是多余的吗?
【问题讨论】:
对你的例子是,对你的问题不是。
2 列上的复合索引会使 第一个 上的附加索引变得多余。但是,second 列上的索引可能仍然有用。
但是,如果每一列本身都是唯一的,那么您可能不需要复合索引。你可能想调查一下。
索引过多并不总是一个明显的问题。但是浪费资源,尤其是为了多余的目的,总是不好的。
【讨论】:
任何一个包含多个列的索引也可以用作较少相同列的索引,只要它们都是索引开头的列。
让我举个例子。这些列的索引:
a, b, c, d, e, f也可以作为以下列组合的索引:
a, b, c, d, e A B C D 甲,乙,丙 一,乙 一个所以对于您的问题:您拥有的索引也可以用作 Column1 的索引,但不能用作 Column2 的索引。
【讨论】: