我正在为时间序列数据测试一个名为 Timescaledb 的 PostgreSQL 扩展。如果我正确阅读了PostgreSQL的文档,例如查询
WHERE x = 'somestring' and timestamp between 't1' and 't2'
最适合使用 index (x,timestamp)
。并EXPLAIN
在该 SQL 查询上运行表明它有效。
当我在 Timescaledb 超表上尝试相同的查询时,它包含相同的数据且没有索引(x,timestamp)
。性能大致相同(如果不是更好)。创建索引后(x,timestamp)
,性能并没有提高。
我知道超表有一个内置的时间戳索引。所以,我应该有一个不同的策略来向表中添加索引,例如只使用(x)
. 那正确吗?