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
(不过没关系)。
我正在构建一个 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
(不过没关系)。