在没有rowid或主键的表上优化sql查询

时间:2018-10-22 14:53:27

标签: sql sqlite select

我有一个数据库,该数据库的表没有行号或主键。它仅具有两列时间戳记和值。两个值都是双精度。时间戳按升序排序。

是否可以告诉sqlite时间戳已排序,以便对时间戳查询进行二进制搜索?如果没有,有没有一种方法可以简单地获取查询结果的行索引,并使用该行索引进行查询以加快速度?

1 个答案:

答案 0 :(得分:1)

SQL表表示无序集。没有订购。

SQL提供了索引,这些索引的行为通常与您描述的完全一样。因此,您想要:

create index idx_t_timestamp_value on t(timestamp, value);

此查询将最适合where子句,例如:

where t.timestamp = ?

请注意,索引是自动使用的。另外,它占用了额外的存储空间(如果碰巧是个问题)。