【问题标题】:Can I create an UNIQUE WHERE index?我可以创建一个 UNIQUE WHERE 索引吗?
【发布时间】:2014-04-26 20:06:53
【问题描述】:

如果b = 1,则已知两个整数列(a, b) 的组合是唯一的。 b 可以假设的唯一其他值是 0。

我想通过一个 UNIQUE 约束来表达这一点,类似于

CREATE TABLE t (
    id INTEGER PRIMARY KEY,
    a INTEGER NOT NULL,
    b INTEGER NOT NULL,
    CONSTRAINT u UNIQUE (a,b) WHERE b=0
)

但是,根据语法图表,SQLite 似乎没有允许我指定 WHERE 部分的功能。有没有其他方法可以使用?

b = 1 条件在数据中很少见,但在查询中非常常用,所以我肯定想使用它添加索引。

【问题讨论】:

    标签: sqlite indexing unique


    【解决方案1】:

    我做了更多的研究,但一无所获。

    我能想到的最好办法是:

    • 为 b=1 创建索引
    • 添加 CHECK NOT EXISTS 约束而不是 UNIQUE

    索引可以被约束使用,并且至少应该防止全表扫描(需要通过 EXPLAIN QUERY PLAN 验证)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-24
      • 2021-01-20
      • 1970-01-01
      • 2020-12-04
      • 2017-02-06
      • 1970-01-01
      相关资源
      最近更新 更多