SQLite strftime慢吗?

时间:2018-02-01 15:24:35

标签: performance sqlite strftime

我有一个包含大约1M条目的表。

此表中使用的主要请求是:

SELECT SUM(count_value),strftime('%Y-%m-%d %H:%M:00.000', created_at) as timestr FROM mytable GROUP BY timestr

给了我这样的结果:

123540  2018-02-01 15:32:00.000
225000  2018-02-01 15:33:00.000

不幸的是,使用strftime似乎很慢。上述请求大约需要2.5秒才能返回8行结果。

比较以下要求

SELECT SUM(count_value) FROM mytable GROUP BY created_at

仅用了400毫秒就可以获得500多个结果。

相同的表现:

SELECT SUM(count_value),created_at as timestr FROM mytable GROUP BY timestr

数据集不会在较宽的日期时间范围内传播(几分钟),但我不认为这是相关的。

有没有办法提高strftime的速度?

注意:请求的目标是总结一个按分钟分组的结果值。

更新1

如上所述: DB方案:

CREATE TABLE mytable (
created_at TEXT NOT NULL DEFAULT(strftime('%Y-%m-%d %H:%M:%f', 'now')), 
uuid TEXT NOT NULL,
count_value INTEGER NOT NULL DEFAULT 0);

CREATE INDEX idx_date_cpt ON mytable(created_at ASC);
CREATE INDEX idx_uuid_cpt ON mytable(uuid ASC);

解释的结果

EXPLAIN QUERY PLAN SELECT SUM(count_value),strftime('%Y-%m-%d %H:%M:00.000', created_at) as timestr FROM mytable GROUP BY timestr

selectid    order   from    detail
0   0   0   SCAN TABLE mytable
0   0   0   USE TEMP B-TREE FOR GROUP BY

0 个答案:

没有答案