我有一个 500MB 的 sqlite 数据库,大约有 500 万行,具有以下架构:
CREATE TABLE my_table (
id1 VARCHAR(12) NOT NULL,
id2 VARCHAR(3) NOT NULL,
date DATE NOT NULL,
val1 NUMERIC,
val2 NUMERIC,
val2 NUMERIC,
val4 NUMERIC,
val5 INTEGER,
PRIMARY KEY (id1, id2, date)
);
我正在尝试运行:
SELECT count(ROWID) FROM my_table
查询现在已经运行了几分钟,这对我来说似乎太过分了。我知道 sqlite 没有针对 count(*) 类型的查询进行优化。
如果至少我的机器看起来很努力工作,我可以接受。但是,我的 CPU 负载徘徊在 0-1% 左右。 Process Explorer 中的“磁盘增量总字节数”约为 500.000。
是否可以加快速度?
最佳答案
您应该为您查询的任何字段创建一个索引。 在 tags(tag) 上创建索引 tags_index;
。然后,我确信查询肯定会更快。其次,尝试规范化您的表并进行测试(没有索引)。比较结果。
关于Sqlite 速度慢但几乎不使用机器资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23979960/