该索引与 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,您可能需要检查一下。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...