代码之家  ›  专栏  ›  技术社区  ›  Björn Pollex

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

  •  2
  • Björn Pollex  · 技术社区  · 15 年前

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

    UNIQUE(Column1, Column2)
    

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

    2 回复  |  直到 15 年前
        1
  •  4
  •   MJB    15 年前

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

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

    但是,如果每一列本身都是唯一的,则可能不需要复合索引。你可能想调查一下。

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

        2
  •  4
  •   Lasse V. Karlsen    15 年前

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

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

    a, b, c, d, e, f
    

    还可以用作以下列组合的索引:

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

    因此,对于您的问题:您所拥有的索引也可以用作第1列的索引,而不是第2列的索引。