Amazon Redshift大IN子句与大列查询性能优化问询
Amazon Redshift大IN子句查询性能优化问题
我在使用Amazon Redshift数据库时,遇到了包含大IN子句(或等效多OR条件)的查询性能问题,这类查询用于获取多个ID,典型语句如下:
SELECT id, colA, colB FROM tableName WHERE id IN ('id_A', 'id_B', ..., 'id_N');
其中colA体积特别大,通常达MB级别,此类查询执行时间异常长,每次耗时2至5分钟。
表配置信息
Sortkey: AUTO(SORTKEY(id)) Diststyle: AUTO(EVEN) skew_sortkey1: 17.32
集群详情
Storage used: 65.02% (416.13 of 640 GB used) Node type: dc2.large Number of nodes: 4
我怀疑较高的skew_sortkey1值是因colA体积过大,需要读取多个存储块所致。考虑将diststyle改为KEY(id),理论上可让id与colA同节点存储,降低skew_sortkey1值,此方法能否提升查询性能?或有更高效的解决方案?
补充信息
- 查询计划截图
- 单ID条件查询的stl_scan截图(该查询耗时2分钟)
内容的提问来源于stack exchange,提问作者kemkemg0
相关产品推荐
相关产品推荐

