我有我目前定義如下的表:我應該使用多列索引還是兩列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