Vertica - 按降序排列的投影

Posted

技术标签:

【中文标题】Vertica - 按降序排列的投影【英文标题】:Vertica - projections for order by descending order 【发布时间】:2020-01-09 06:33:01 【问题描述】:

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

以下查询非常慢(即使我提供了一个 event_timestamp 过滤器来仅考虑 1 天的事件,SORT 也需要很长时间) select * from public.f_network_events order by event_timestamp desc limit 1000;

【问题讨论】:

【参考方案1】:

恐怕你不能 ORDER BY ts DESCENDING 在 Vertica 中进行投影。

我为此需要使用的技巧是添加一列:

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

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

我同意,这不是令人叹为观止的美丽,但值得在大数据场景中遇到麻烦......

【讨论】:

以上是关于Vertica - 按降序排列的投影的主要内容,如果未能解决你的问题,请参考以下文章

SQLAlchemy 按降序排列?

Codeigniter 分页链接按降序/倒序排列?

如何在 Firebase 中按降序排列数据 - Python

使用 plotly-express 按值按降序排列条形图中的条形

2个类,按降序排列到ArrayList中

推荐表排序数据框结果按降序排列 Pandas