timescaleDB 中的 ASC 时间索引

ASC time index in timescaleDB

我正在构建一个 TimescaleDB 本地服务器,并且正在创建我的第一个“生产”超表。关键是,目前,我的数据库的所有未来消费者都将按 ASC 顺序使用数据,但默认情况下,timescale 在时间列中创建一个 DESC 索引。

我的疑问是,是否值得更改默认行为并将索引设置为 ASC

我不知道默认情况下 DESC 是否有充分的理由,我会受到一些惩罚。我还读到 postgresql 中的索引可以向后读取,因此可以在 ASC 查询中使用 DESC 索引,但我不知道是否存在性能损失。

另一方面,简单地删除默认索引并创建一个具有不同顺序的新索引是否安全?也不确定是否删除它我会搞砸一些时间尺度的内部功能。

感谢您的宝贵时间,

H25E

对于单列索引,创建ASC还是DESC完全没有关系,因为索引可以双向读取,效率相同。

真正需要在索引中指定 DESC 的唯一情况是索引应该支持像 ORDER BY a, b DESC 这样的 ORDER BY 子句。然后,其中一个索引列必须排序为 ASC,另一个必须排序为 DESC — 但同样,哪个是 ASC 哪个是 DESC 并不重要,因为索引可以双向阅读。

所以,对于单列索引,没有必要重新建立索引,当初建立它也没有什么好的理由DESC(不过没关系)。