代码之家  ›  专栏  ›  技术社区  ›  ZNackasha

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

  •  0
  • ZNackasha  · 技术社区  · 6 年前

    我有一个数据库,它有一个没有rowid或主键的表。它只包含两列时间戳和值。两个值都是双精度的。时间戳按升序排序。

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Gordon Linoff    6 年前

    SQL表表示 无序 套。没有命令。

    SQL提供了索引,这些索引的行为通常与您描述的完全一致。所以,你想要:

    create index idx_t_timestamp_value on t(timestamp, value);
    

    此查询将是 where 条款如下:

    where t.timestamp = ?
    

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