【发布时间】:2017-12-10 08:56:59
【问题描述】:
我有 SQLite 数据库:
CREATE TABLE IF NOT EXISTS Commits
(
GlobalVer INTEGER PRIMARY KEY,
Data blob NOT NULL
) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS Streams
(
Name char(40) NOT NULL,
GlobalVer INTEGER NOT NULL,
PRIMARY KEY(Name, GlobalVer)
) WITHOUT ROWID;
我要选择 1 个:
SELECT Commits.Data
FROM Streams JOIN Commits ON Streams.GlobalVer=Commits.GlobalVer
WHERE
Streams.Name = ?
ORDER BY Streams.GlobalVer
LIMIT ? OFFSET ?
之后我想再做一次选择:
SELECT Commits.Data,Streams.Name
FROM Streams JOIN Commits ON Streams.GlobalVer=Commits.GlobalVer
WHERE
Streams.Name = ? COLLATE NOCASE
ORDER BY Streams.GlobalVer
LIMIT ? OFFSET ?
问题是第二次选择的工作速度非常慢。我认为这是因为COLLATE NOCASE。我想加快速度。我试图添加索引,但它没有帮助(可能是我做错了什么?)。如何以大约等于第一个查询的速度执行第二个查询?
【问题讨论】: