更新时间:2025-04-28 GMT+08:00
分享

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。

相关文档