微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

该索引与 TimescaleDB 相关吗?

如何解决该索引与 TimescaleDB 相关吗?

我有一个关于 timescaleDB 索引的问题

我们有一个包含以下列的表格:

时间戳 id 价值 ...

其中 id 代表测量值。例如:特定位置的室温

目前我们有 2 个索引 (id,timestamp DESC)认的 (timestamp DESC)

我们基本上有两种类型的查询

  1. SELECT * FROM table WHERE id = 'aaa' AND timestamp BETWEEN <date1> AND <date2>
  2. SELECT * FROM table WHERE id in ('aaa','bbb','ccc',...) AND timestamp BETWEEN <date1> AND <date2>

似乎索引 1 对查询 1 非常有用。

对于查询 2,id 的数量可以达到近 200。在这种情况下,是否可以在 (timestamp DESC,id)添加索引?

也许删除认的 (timestamp DESC)

解决方法

对于第一个查询,(id,timestamp DESC) 上的现有索引应该比 (timestamp DESC,id) 更好,因为第一个查询应该先在 id 上选择,然后在 timestamp .如果只有几行满足 timestamp 上的查询条件,即 timestamp BETWEEN <date1> AND <date2>,则相反的索引可能会更好。

我强烈建议对您的查询运行 EXPLAIN ANALYZE 并了解如何在查询计划中使用现有索引。

如果您将索引保留在 (id,timestamp DESC),那么将默认索引保留在 (timestamp DESC) 上可能是个好主意。

Timescale 写了一个 blogpost about using composite indexes,您可能需要检查一下。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。