如何解决该索引与 TimescaleDB 相关吗?
我们有一个包含以下列的表格:
时间戳 | id | 价值 | ... |
---|
其中 id 代表测量值。例如:特定位置的室温
目前我们有 2 个索引 (id,timestamp DESC)
和默认的 (timestamp DESC)
我们基本上有两种类型的查询:
SELECT * FROM table WHERE id = 'aaa' AND timestamp BETWEEN <date1> AND <date2>
SELECT * FROM table WHERE id in ('aaa','bbb','ccc',...) AND timestamp BETWEEN <date1> AND <date2>
似乎索引 1 对查询 1 非常有用。
对于查询 2,id 的数量可以达到近 200。在这种情况下,是否可以在 (timestamp DESC,id)
上添加索引?
解决方法
对于第一个查询,(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 举报,一经查实,本站将立刻删除。