Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

分析查询计划

在分析查询计划之前,您应熟悉如何阅读其内容。如果不熟悉如何阅读查询计划,建议您阅读查询计划后再继续。

运行 EXPLAIN 命令以获取查询计划。要分析查询计划提供的数据,请执行以下步骤:

  1. 确定成本最高的步骤。在处理其余步骤时,专注于优化这些步骤。

  2. 查看联接类型:

    • 嵌套循环:此类联接通常在联接条件被忽略时出现。有关建议的解决方案,请参阅嵌套循环

    • 哈希和哈希联接:在联接表时,如果联接列既非分配键,也非排序键时,需要使用哈希联接。有关建议的解决方案,请参阅哈希联接

    • 合并联接:无需进行任何更改。

  3. 注意哪个表用于内部联接,哪个表用于外部联接。查询引擎通常选择较小的表进行内部联接,使用较大的表进行外部联接。如果查询引擎选择有误,则可能是统计数据过时造成的。有关建议的解决方案,请参阅表统计数据缺失或过时

  4. 查看是否存在任何高成本的排序操作。如果存在,请参阅未排序或排序错乱的行了解建议的解决方案。

  5. 查找以下广播运算符(存在高成本操作):

    • DS_BCAST_INNER:指示表被广播到所有计算节点,对于小型表尚可,对于大型表效率不佳。

    • DS_DIST_ALL_INNER:指示所有工作负载均位于单一切片上。

    • DS_DIST_BOTH:指示需要进行大量的重新分配操作。

    有关适用于这些情景的建议解决方案,请参阅非最优数据分配