避免使用耗费资源的操作

带有 DISTINCTUNIONMINUSINTERSECTORDER BY 的 SQL 语句会触发 SQL 引擎的 排序(SORT) 功能,导致资源消耗过高。

  • DISTINCT:执行一次排序操作。
  • UNIONMINUSINTERSECT:每种操作至少需要两次排序。
  • UNION 查询中的嵌套排序
  • 当查询中带有 GROUP BY 子句时,会触发 嵌入排序(NESTED SORT)
  • 每个查询先进行一次排序,执行 UNION 时会再执行 唯一排序(SORT UNIQUE)
  • 只有在前面的嵌入排序结束后,SORT UNIQUE 才能开始。嵌入排序层级越深,查询性能影响越大。

性能优化建议

通常情况下,带有 UNIONMINUSINTERSECT 的 SQL 语句可以通过 重写查询 来优化性能,避免不必要的排序操作。