SQLite—在一起使用WHERE和ORDER BY时提高查询性能

SQLite—在一起使用WHERE和ORDER BY时提高查询性能,sqlite,Sqlite,当前,我尝试在同时使用WHERE和orderby时加快查询速度 我使用行大小为50000的数据进行了测试 无索引(5000毫秒) 带索引(500毫秒) 无索引(200毫秒) 带索引(200毫秒) 当我尝试将WHERE和orderby组合在一起时,使用这两个索引 带2个索引(5000毫秒) 演出不太理想。性能就像不使用任何索引一样 根据测试结果,我希望通过仅使用orderby和仅使用WHERE将性能保持在1秒以下 当我们同时使用WHERE和ORDER BY时,有没有办法提高查询性能? 旁注

当前,我尝试在同时使用
WHERE
orderby
时加快查询速度

我使用行大小为50000的数据进行了测试


无索引(5000毫秒) 带索引(500毫秒)
无索引(200毫秒) 带索引(200毫秒)
当我尝试将
WHERE
orderby
组合在一起时,使用这两个索引

带2个索引(5000毫秒) 演出不太理想。性能就像不使用任何索引一样

根据测试结果,我希望通过仅使用
orderby
和仅使用
WHERE
将性能保持在1秒以下

当我们同时使用WHERE和ORDER BY时,有没有办法提高查询性能?


旁注: 如果我们将
订单
替换为
id
(rowid的别名)

通过使用rowid(500毫秒) 首先,了解查询是如何执行的以及使用了哪些索引,并更好地了解sqlite如何使用索引(第3部分特别有用)
DROP INDEX `index_plain_note_order`
SELECT * FROM plain_note ORDER BY `order` ASC;
CREATE INDEX `index_plain_note_order` ON `plain_note` (`order`);
SELECT * FROM plain_note ORDER BY `order` ASC;
DROP INDEX `index_plain_note_trashed`;
SELECT * FROM plain_note WHERE trashed = false;
CREATE INDEX `index_plain_note_trashed` ON `plain_note` (`trashed`);
SELECT * FROM plain_note WHERE trashed = false;
CREATE INDEX `index_plain_note_order` ON `plain_note` (`order`);
CREATE INDEX `index_plain_note_trashed` ON `plain_note` (`trashed`);
SELECT * FROM plain_note WHERE trashed = false ORDER BY `order` ASC;
CREATE INDEX `index_plain_note_trashed` ON `plain_note` (`trashed`);
SELECT * FROM plain_note WHERE trashed = false ORDER BY `id` ASC;