分析查询计划 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

分析查询计划

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

运行 EXPLAIN 命令以获取查询计划。若要分析查询计划提供的数据,请按照下列步骤操作:

  1. 确定成本最高的步骤。继续完成其余步骤时,专注于优化这些步骤。

  2. 查看联接类型:

    • 嵌套循环:此类联接通常因此联接条件被忽略而发生。有关建议的解决方案,请参阅嵌套循环

    • 哈希和哈希联接:当联接列不为分配键,也不为排序键时,使用哈希联接来联接表。有关建议的解决方案,请参阅哈希联接

    • 合并联接:无需更改。

  3. 注意哪个表用于内部连接,哪个表用于外部连接。查询引擎通常会为内部连接选择较小的表,为外部连接选择较大的表。如果没有进行此类选择,则您的统计数据可能已过时。有关建议的解决方案,请参阅表统计数据缺失或过时

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

  5. 查找具有高成本操作的以下广播运算符:

    • DS_BCAST_INNER:表示将表广播到所有计算节点,这对于小表来说很好,但对于较大的表来说并不理想。

    • DS_DIST_ALL_INNER:表示所有工作负载都位于单个切片上。

    • DS_DIST_BOTH:表示大量重新分配。

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