Vertica - 按降序排列的投影

Vertica - projections for order by descending order

我们有一个时间序列网络数据,我们将其存储在 Vertica table 中。 UI 需要按时间戳的降序显示数据。我尝试将查询传递给数据库设计者,但它没有建议任何降序投影,它已经有按时间戳按升序排序的投影。我还尝试通过降序创建具有时间戳顺序的投影,但 Vertica 抛出错误 - "Projections can only be sorted in ascending order"。 由于 UI 需要按时间戳的降序显示事件,因此查询的 SORT 成本非常高 - 我们可以以任何方式对其进行优化吗?

以下查询非常慢(即使我提供 event_timestamp 过滤器来考虑仅 1 天的事件,SORT 也会花费大量时间) select * 来自 public.f_network_events order by event_timestamp desc limit 1000;

恐怕你不能 ORDER BY ts DESCENDING Vertica 中的投影。

我为这个必要性使用的技巧是添加一列:

tssort INTEGER DEFAULT TIMESTAMPDIFF(microsecond,ts,'2100-01-01::TIMESTAMP)

.. 按此对投影进行排序,计算查询中的 TIMESTAMPDIFF() 并将其用于 WHERE 条件。

不是惊人的美丽,我同意,但值得在大数据场景中遇到麻烦......