【发布时间】:2014-06-01 12:39:11
【问题描述】:
我有一个大约 500 万行的 500MB sqlite 数据库,其架构如下:
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 中的“Disk Delta Total Bytes”约为 500.000。
知道这是否可以加快速度吗?
【问题讨论】:
-
什么操作系统?什么文件系统?任何病毒扫描程序?
-
SQLite 不支持并发访问。一旦事务开始,它就会锁定表。您确定没有其他进程在同一个数据库的事务中闲置吗?
-
@CL Windows Server 2003 R2,赛门铁克端点保护
-
@aruisdante 这不意味着查询永远不会完成吗?就我而言,它确实如此,但速度很慢。
-
什么文件系统?这是在网络上吗?
标签: sqlite