几天前我有一个关于这个问题的问题,但我仍然想知道如何调整我在这个查询上的表现。
我有一个看起来像这样的表(SQLite)
CREATE TABLE ZONEDATA (
TIME INTEGER NOT NULL,
CITY INTEGER NOT NULL,
ZONE INTEGER NOT NULL,
TEMPERATURE DOUBLE,
SERIAL INTEGER ,
FOREIGN KEY (SERIAL) REFERENCES ZONES,
PRIMARY KEY ( TIME, CITY, ZONE));
我正在运行这样的查询:
SELECT temperature, time, city, zone from zonedata
WHERE (city = 1) and (zone = 1) and (time BETWEEN x AND y);
x 和 y 是变量,它们之间可能有几十万个变量。
温度范围从 -10.0 到 10.0,城市和区域从 0-20(在本例中为 1 和 2,但可以是其他值)。来自不同区域和城市的记录以大约 5-6 秒的间隔连续记录。这会产生大量数据,并不一定意味着每条记录都按正确的时间顺序记录。
问题是我如何在大时间范围内优化记录的检索(其中记录没有按时间 100% 正确排序)。这可能需要很长时间,尤其是当我从多个城市和区域检索时。这意味着多次使用不同的参数运行上述查询。我正在寻找的是对查询、表结构(最好不是)或其他可更改设置的特定更改。
我使用它的应用程序是在 c++ 中实现的。