我有一个表,我目前定义如下:
CREATE TABLE pairs (
id INTEGER PRIMARY KEY,
p1 INTEGER,
p2 INTEGER,
r INTEGER,
UNIQUE(p1, p2) ON CONFLICT IGNORE,
FOREIGN KEY (p1) REFERENCES points(id),
FOREIGN KEY (p2) REFERENCES points(id)
)
之后,它充满了千兆字节的数据。现在我需要像这样做很多选择:
SELECT id, r FROM pairs WHERE p1 = 666 OR p2 = 666
所以问题是:我应该创建哪些索引来加速这个选择?
CREATE INDEX p1_index ON pairs(p1)
CREATE INDEX p2_index ON pairs(p2)
或者可能
CREATE UNIQUE INDEX p_index ON pairs(p1, p2)
或者可能两者兼而有之?(并为他们购买新的硬盘)。SQLite3 不会为UNIQUE
多列的约束自动创建索引。