在SQLite中查询范围

时间:2012-08-23 13:38:27

标签: sql sqlite system.data.sqlite

我有一个SQLite表,其中包含大量数据,数百万行。每隔一秒插入一行。

行有一个Created日期的列,它从Epoch转换为毫秒并保存为数字,例如1343224574667.每行还有一个容器ID的列,它只是一个字符串字段。 / p>

我正在尝试运行查询以获取在特定时间范围内为某个容器ID创建的项目。所以查询看起来像

Select * from Item where Created > [number] and Created < [number] and ContainerId=[string]

非常基本的查询。

我在桌子上有几个索引。 [Created]上有一个,[Created,ContainerId]上有一个。当我在很小的时间范围内运行此查询时,查询非常快,就像几百毫秒。然而,将其展开以使时间范围延长一周左右,并且此查询非常缓慢,平均超过75秒。有什么方法可以加快速度吗?这似乎是一个疯狂的漫长时间,不得不等待结果。但我不是DBA,所以也许我做错了。

谢谢!

1 个答案:

答案 0 :(得分:0)

聚集索引可以加快查询范围。在SQLite的情况下,这可能意味着使用主键。如果可以,请尝试将(Created,ContainerId)作为表的主键。