Redshift允许将多个列指定为SORTKEY列,但大多数最佳实践文档都被编写为好像只有一个SORTKEY.
如果我创建一个表SORTKEY (COL1, COL2),是否意味着所有列都按COL1排序,那么COL2?或者,因为它是一个柱状存储,每列都以不同的顺序存储?即COL1顺序为COL1,COL2顺序为COL2,其他列无序?
我的情况是我有一个表(其中包括)type_id和timestamp列.数据大致按时间戳顺序到达.大多数查询都是由type_id和timestamp加入/限制的.通常,type_id子句更具体,这意味着可以通过查看type_id子句而不是通过查看timestamp子句来排除更大比例的行.因此,type_id是DISTKEY.我想了解的优点和缺点的SORTKEY (type_id),SORTKEY (stamp),SORTKEY (type_id,stamp),SORTKEY (stamp,type_id).
谢谢.
使用带有简单选项的for循环可以:
scala> for (lst <- Some(List(1,2,3))) yield lst
res68: Option[List[Int]] = Some(List(1, 2, 3))
Run Code Online (Sandbox Code Playgroud)
但循环选项的内容不会:
scala> for (lst <- Some(List(1,2,3)); x <- lst) yield x
<console>:8: error: type mismatch;
found : List[Int]
required: Option[?]
for (lst <- Some(List(1,2,3)); x <- lst) yield x
^
Run Code Online (Sandbox Code Playgroud)
...除非Option明确转换为List:
scala> for (lst <- Some(List(1,2,3)).toList; x <- lst) yield x
res66: List[Int] = List(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)
为什么需要显式列表转换?这是惯用的解决方案吗?
在pg_stat_activity我可以看到客户端正在使用游标通过一些查询结果.但是我如何才能看到原始查询是什么?
pipeline=> select pid, query from pg_stat_activity where state = 'active' order by query_start;
pid | query
-------+--------------------------------------------------------------------------------------
6734 | FETCH FORWARD 1000 FROM "c_109886590_1"
26731 | select pid, query from pg_stat_activity where state = 'active' order by query_start;
(2 rows)
Run Code Online (Sandbox Code Playgroud)
我看到了pg_cursors,但它是空的:
pipeline=> select * from pg_cursors;
name | statement | is_holdable | is_binary | is_scrollable | creation_time
------+-----------+-------------+-----------+---------------+---------------
(0 rows)
Run Code Online (Sandbox Code Playgroud)
服务器位于AWS RDS上.
pipeline=> select version();
version
--------------------------------------------------------------------------------------------------------------
PostgreSQL 9.3.3 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) …Run Code Online (Sandbox Code Playgroud)