使用redshift键使查询更有效率

时间:2015-09-24 02:33:56

标签: amazon-redshift

我有一个包含数亿行的红移表。我的典型查询看起来像这样......

select * from table where senddate > '2015-01-01 00:00:00' and senddate < '2015-08-01 00:00:00' and username = 'xyz'

我不确定排序和分配键是如何工作的。我想知道什么是使查询有效的最佳选择。 我有大约3,000个唯一的用户名,senddate是过去5年内的日期。

我还有一个问题:

我没有对此表使用任何压缩。这会使查询变慢吗?

1 个答案:

答案 0 :(得分:1)

  • 永远不要在列式数据库中使用select *,只需拉出所需的列。
  • 如果这是您要运行的唯一查询,则分发键无关紧要。你可以做一个diststyle ALL,但它需要n次存储,其中n是节点数。也就是说,如果要连接表,请将它们分发到连接键
  • 您可以在senddate上使用sortkey,以避免读取所有记录(类似于行存储中的表扫描)

通读以便对这些要点有基本的了解 http://docs.aws.amazon.com/redshift/latest/dg/c-optimizing-query-performance.html