为什么Redshift需要进行全表扫描以找到DIST / SORT键的最大值?
技术问答
248 人阅读
|
0 人回复
|
2023-09-12
|
我正在Redshift试着加快数据插入Redshift表的速度。我今天注意到的一件事就是做这样的事情! @9 k0 d0 r: H! `
CREATE TABLE a (x int) DISTSTYLE key DISTKEY (x) SORTKEY (x);INSERT INTO a (x) VALUES (1),(2),(3),(4);VACUUM a; ANALYZE a;EXPLAIN SELECT MAX(x) FROM a;yields0 m( c1 Q+ X6 |- O) o3 H7 T- F
QUERY PLANXN Aggregate (cost=0.05..0.05 rows=1 width=4) -> XN Seq Scan on a (cost=0.00..0.04 rows=4 width=4)我知道这只有4行,但我仍然不应该扫描整个表来找到预排序列的最大值。工作中是否包含元数据?ANALYZE?
: E6 G1 U9 k) N就像完整性检查一样,EXPLAINforSELECT x FROM a WHERE x > 3只扫描2行而不是整个表。
, D0 R; o7 P: j H8 _: j编者按:我在表中插入了100000多行,其随机值从1000到10000。进行真空和分析。查询计划仍然表示,它必须扫描所有10004行。
4 i+ I1 [8 j4 o9 d% N9 K6 O/ p& O2 | - `- h) C% \' c$ Q: R/ T
解决方案: |
|
|
|
|
|