【问题标题】:Why does my query still do a full table scan with sortkey in Redshift?为什么我的查询仍然在 Redshift 中使用 sortkey 进行全表扫描?
【发布时间】:2018-03-23 21:55:08
【问题描述】:

假设我们有一个表 table1,字段 1 为 INT ENCODE ZSTD,我们在字段 1 上添加了交错排序键。

但是当我查询select * from table1 where field1=123; 时,我仍然看到对整个表的顺序扫描,我认为这应该是对表的子扫描。

我对排序键有什么误解吗?

【问题讨论】:

    标签: amazon-redshift


    【解决方案1】:

    1) 根据您的说法,您不需要交错排序键,因为您只有一列感兴趣。当您希望多列同样重要时,您需要交错排序键,因为您想要运行where col1=123where col2=123 类型的查询。这为大型表提供了好处。

    2) 压缩排序键列被认为是一种不好的做法。 Proof from Amazonthe first column in a compound sort key should not be encoded(一栏键相同)。整篇文章其实很有用,看完不后悔

    3) 配置排序键并填充数据后,最好运行 Vacuum 并分析命令,以确保根据排序键对行进行排序并更新表统计信息。

    【讨论】:

    • 那里有更多的字段。只是有点懒得把它们都放在这里。 (我们有超过 100 列)
    • 我认为我不需要复合排序键,因为执行查询的模式并不总是相同。并且之前也运行过真空和分析。
    • 亚历克斯很聪明。听亚历克斯。 :) 或者阅读我们的“高级表格设计手册”以获得更详细的解释。 aws.amazon.com/blogs/big-data/…
    猜你喜欢
    • 2013-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    • 2017-10-22
    • 1970-01-01
    • 2014-08-21
    • 2021-01-31
    相关资源
    最近更新 更多