我有我目前定义如下的表:我应该使用多列索引还是两列1列?
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
约束创建索引。
不确定旧的sqlite3是否使用线程。 – 2013-04-07 08:18:29
SQLite不使用线程。 – 2013-04-07 09:58:23