sqlite对于单个查询来说太慢
我有一个名为Rain的表,它有大约10000行,模式如下: 创建表Rain(国家/地区文本、产品文本、日期、Pr24 REAL) AR|CORN|1998-01-01 00:00:00|18.47319984sqlite对于单个查询来说太慢,sqlite,Sqlite,我有一个名为Rain的表,它有大约10000行,模式如下: 创建表Rain(国家/地区文本、产品文本、日期、Pr24 REAL) AR|CORN|1998-01-01 00:00:00|18.47319984 AR|CORN|1998-01-02 00:00:00|1.517950058 AR|CORN|1998-01-03 00:00:00|1.34533 AR|CORN|1998-01-04 00:00:00|7.247509956 AR|CORN|1998-01-05 00:00:00|6
AR|CORN|1998-01-02 00:00:00|1.517950058
AR|CORN|1998-01-03 00:00:00|1.34533
AR|CORN|1998-01-04 00:00:00|7.247509956
AR|CORN|1998-01-05 00:00:00|6.925020218 现在,对于表中的每一行,我要计算到该行的
日期之前一年的总降雨量。我在sqlte3解释器中执行以下代码:
CREATE TABLE result AS
SELECT Country, Product, Date,
(SELECT SUM(Pr24) FROM Rain AS tmpTb
WHERE tmpTb.Date BETWEEN datetime(Rain.Date, 'start of year') AND Rain.Date)
AND tmpTb.Country = Rain.Country AND tmpTb.Product = Rain.Product
) AS Rainfall
FROM Rain
但需要大约4~5小时才能完成,这是不可接受的。
有什么建议吗 数据库必须为每次执行子查询扫描所有行。
换句话说,您有大约100000000行访问
索引将允许更快地搜索行。
对于此查询,a将是最佳的:
CREATE INDEX whatever ON Rain(Country, Product, Date, Pr24);
在所有列上创建索引是否有帮助?