wxs*_*wxs 3 database sqlite optimization
我有一个简单的SQLite数据库,我正在执行批量,性能敏感的读取.它的架构看起来像这样
CREATE TABLE test (id INTEGER PRIMARY KEY, idB INTEGER, category INTEGER);
Run Code Online (Sandbox Code Playgroud)
我按照增加的idB的顺序(idB, category)插入每个类别的元素,因此插入序列可能如下所示:
(0, 0)
(1, 0)
(2, 0)
(3, 0)
(0, 1)
(1, 1)
(2, 1)
(0, 2)
(1, 2)
(2, 2)
(3, 2)
...
Run Code Online (Sandbox Code Playgroud)
我在idB和类别列上都放了索引.我发现这个查询:
SELECT * FROM test WHERE category = 1 ORDER BY idB ASC;
Run Code Online (Sandbox Code Playgroud)
比这个查询慢一点
SELECT * FROM test WHERE category = 1 ORDER BY rowid ASC;
Run Code Online (Sandbox Code Playgroud)
我假设是因为SQLite知道数据库是按照增加rowid的顺序存储的,但是不知道它也恰好按照增加的id的顺序存储.这对我的应用程序来说很好,但我想知道rowid的这个排序是否保证比其他索引列更快?也就是说,SQLite是否会一直选择按有序rowid存储其数据库,这样rowID的排序总是很快?