回答

收藏

为什么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
    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则