【问题标题】:Does SQLite multi column primary key need an additional index?SQLite 多列主键是否需要额外的索引?
【发布时间】:2011-03-04 15:18:00
【问题描述】:

如果我像这样创建一个表:

CREATE TABLE something (column1, column2, PRIMARY KEY (column1, column2));

column1 和column2 本身都不是唯一的。但是,我将在 column1 上进行大部分查询。

多列主键是否分别为两列创建索引?我认为如果你指定一个多列主键,它会将它们索引在一起,但我真的不知道。

在 column1 上添加 UNIQUE INDEX 是否会带来任何性能优势?

【问题讨论】:

    标签: sql database database-design sqlite


    【解决方案1】:

    可能不会有性能优势,因为针对col1=xxx and col2=yyy 的查询将使用与col1=zzz 之类的查询相同的索引,而没有提及col2。但我的经验只有 Oracle、SQL Server、Ingres 和 MySQL。我不确定。

    【讨论】:

      【解决方案2】:

      您当然不想像刚才所说的那样在第 1 列上添加唯一索引:

      column1 和 column2 本身都不是唯一的。

      如果第一列在前,那么它将在大多数数据库的多列索引中排在第一位,因此很可能会被使用。第二列是可能不使用索引的列。除非您发现问题,否则我不会在第二列添加一个索引,并且我会根据您上面写的评论添加一个索引而不是唯一索引。

      但是 SQL lite 必须像大多数其他数据库一样通过某种方式查看它正在使用的内容,对吧?设置 Pk 并查看仅使用 column1 的查询是否正在使用它。

      【讨论】:

        猜你喜欢
        • 2021-01-08
        • 2018-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-15
        • 2013-11-11
        相关资源
        最近更新 更多