SQL复杂度
SQL复杂度查看支持批处理的单任务Spark SQL作业和实时处理单任务Flink SQL(包括MRS Flink SQL)作业。
SQL复杂度:系统会先自动统计SQL语句中的关键字,再折算为SQL复杂度。
- 统计SQL关键字。
SQL关键字个数=JOIN个数+GROUP BY个数+ORDER BY个数+DISTINCT个数+窗口函数个数+MAX((INSERT个数|UPDATE个数|DELETE个数), 1)。
如果SQL关键字个数远高于20,会导致解析消耗大量时间,且作业长期处于排队状态,建议您优化SQL,控制SQL关键字个数。
- SQL复杂度计算。
- SQL关键字个数小于等于3,复杂度为1。
- SQL关键字个数小于等于6,且大于等于4,复杂度为1.5。
- SQL关键字个数小于等于19,且大于等于7,复杂度为2。
- SQL关键字个数大于等于20,复杂度为4。
- SQL作业复杂度示例,以下述SQL为例。
SELECT DISTINCT total1 FROM(SELECT id1, COUNT(f1) AS total1 FROM in1 GROUP BY id1 ) tmp1 ORDER BY total1 DESC LIMIT 100;
其中:
- DISTINCT个数为1
- GROUP BY个数为1
- ORDER BY个数为1
- MAX((INSERT个数|UPDATE个数|DELETE个数), 1) = MAX(0|0|0, 1) = 1
- SQL关键字个数 = 1+1+1+1 = 4
由此可知,SQL关键字个数小于等于6,且大于等于4,复杂度为1.5,即SQL复杂度为1.5。