分析查询计划
在分析查询计划前,应该熟悉如何阅读该计划。如果您不熟悉如何阅读查询计划,建议阅读 查询计划 后再继续。
运行 EXPLAIN 命令以获取查询计划。若要分析查询计划提供的数据,请按照下列步骤操作:
-
确定成本最高的步骤。继续完成其余步骤时,专注于优化这些步骤。
-
查看联接类型:
-
注意哪个表用于内部连接,哪个表用于外部连接。查询引擎通常会为内部连接选择较小的表,为外部连接选择较大的表。如果没有进行此类选择,则您的统计数据可能已过时。有关建议的解决方案,请参阅表统计数据缺失或过时。
-
查看是否有任何高成本的排序操作。如果有,请参阅 未排序或排序错乱的行 了解建议的解决方案。
-
查找具有高成本操作的以下广播运算符:
-
DS_BCAST_INNER:指示将表广播到所有计算节点。这对于小表而言很好,但对于大表来说并不理想。
-
DS_DIST_ALL_INNER:表示所有工作负载都位于单个切片上。
-
DS_DIST_BOTH:表示大量重新分配。
有关这些情况的建议解决方案,请参阅非最优数据分配。
-