1

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

这些行有一列是创建日期,它转换为自 Epoch 以来的毫秒数并保存为一个数字,例如 1343224574667。每一行还有一列用于容器的 ID,它只是一个字符串字段。

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

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

非常基本的查询。

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

谢谢!

4

1 回答 1

0

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

于 2012-08-23T14:22:49.327 回答