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 - 按降序排列的投影的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Firebase 中按降序排列数据 - Python