我有一个看起来像这样用 sqlite 创建的表。
CREATE TABLE Cars (
POWER DOUBLE ,
CAPACITY DOUBLE,
SPEED DOUBLE,
TIME INTEGER NOT NULL,
TYPE INTEGER NOT NULL,
MODEL INTEGER NOT NULL,
PRIMARY KEY ( TIME, TYPE, MODEL ));
TYPE有15个不同的值,每个类型有20个不同的MODEL值。对于每个模型,每 10 秒插入一个新记录。
一个小例子:
POWER----TIME----TYPE----MODEL
45.6 2588 3 14
46.8 2588 3 15
44.7 2588 3 16
这张表真的很大,有数百万行。
如您所见,我的主键是(TIME, TYPE, MODEL)
因为那是一个唯一标识符。
我的应用程序多次运行选择查询,当时间范围很大时,或者我为多个模型运行查询时,这可能需要很长时间。
例如,我经常运行这种类型的查询:
SELECT power, time, type, model
FROM CARS
WHERE type = 3 AND model = 14 AND time BETWEEN 2588 and 13550;
我尝试过使用主键,例如(TYPE, MODEL, TIME)
在某些情况下提高了性能,但不是在很长的时间间隔内。
我的问题是如何优化这种记录检索,以及哪种主键似乎最适合这种情况?
插入和更新在性能方面不是问题。