小编Abh*_*nav的帖子

将排序键的顺序更改为降序

我们有一个 2 节点 Redshift 集群,其中有一个包含大约 100M 记录的表。我们将时间戳列标记为排序键 - 因为查询始终受到时间限制。但是,我们的用例要求结果必须按降序排序(在排序键上)。

经过一些基准测试后,我们注意到平均时间约为 10 秒。然而,当取消反向排序后,平均时间降至 1 秒以下。

是否可以将排序键的顺序反转为降序?官方文档似乎没有表明这是可能的。不过,我在创建新表时尝试将其放入:

sortkey(start_time DESC)
Run Code Online (Sandbox Code Playgroud)

没有错误,但似乎没有任何效果。

编辑:添加了查询的 EXPLAIN 语句的结果。

  • order_by ASC 的查询

      explain select * from kcdr_sr_desc where user_id=396747 and start_time > '2016-01-01' and start_time < '2016-07-01' order by start_time limit 20;
    
    Run Code Online (Sandbox Code Playgroud)

    结果:

        XN Limit  (cost=0.00..10.86 rows=20 width=300)
        ->  XN Merge  (cost=0.00..709235.56 rows=1306585 width=300)
           Merge Key: start_time
            ->  XN Network  (cost=0.00..709235.56 rows=1306585 width=300)
           Send to leader
           ->  XN Seq Scan on kcdr_sr_desc  (cost=0.00..709235.56 rows=1306585 width=300)
                 Filter: ((user_id = …
    Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-redshift

2
推荐指数
1
解决办法
3226
查看次数