Postgresql-Max的大O表示法与time刻度数据库索引



我正在编写一些脚本,这些脚本需要确定可以中断的时间序列数据流的最后一个时间戳。

我目前正在研究最有效的方法,最简单的方法是使用MAX查找最大的时间戳。由于有问题的表是timescaldb超表,所以它们是索引的,所以理论上应该是跟随索引查找最大的,这应该是非常有效的操作。然而,我不确定这是否真的是真的,我想知道是否有人知道max是如何缩放的,如果它是一个指数,我知道它通常是O(n(函数。

如果列上有索引,max可以使用该索引,并将变为O(1(:

EXPLAIN (COSTS OFF) SELECT max(attrelid) FROM pg_attribute;
QUERY PLAN                                          
══════════════════════════════════════════════════════════════════════════════════════════════
Result
InitPlan 1 (returns $0)
->  Limit
->  Index Only Scan Backward using pg_attribute_relid_attnum_index on pg_attribute
Index Cond: (attrelid IS NOT NULL)
(5 rows)

最新更新