Sqlite 速度慢但几乎不使用机器资源

标签 sqlite

我有一个 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/

相关文章:

python - 如何使用 SQLalchemy 连接三个表并将所有列保留在其中一个表中?

sql - Django或SQL:为分组查询集查找给定列的多少个唯一值

java - 表 Ord 没有名为 _id 的列

Android:在创建数据库时仅在数据库中插入一次行

mysql - 列名不明确错误

php - 单个查询 SELECT 传播到 child

javascript - 从phoneGap的SQlite DB检索值时出错

sqlite - global-messages-db.sqlite中“日期”字段的格式是什么?

sqlite:有没有办法在 SELECT 子句中进行条件 OR/COALESCE?

sqlite - 内存中的临时数据