避免使用耗费资源的操作
带有 DISTINCT、UNION、MINUS、INTERSECT、ORDER BY 的 SQL 语句会触发 SQL 引擎的 排序(SORT) 功能,导致资源消耗过高。
- DISTINCT:执行一次排序操作。
- UNION、MINUS、INTERSECT:每种操作至少需要两次排序。
- UNION 查询中的嵌套排序:
- 当查询中带有 GROUP BY 子句时,会触发 嵌入排序(NESTED SORT)。
- 每个查询先进行一次排序,执行 UNION 时会再执行 唯一排序(SORT UNIQUE)。
- 只有在前面的嵌入排序结束后,SORT UNIQUE 才能开始。嵌入排序层级越深,查询性能影响越大。
性能优化建议
通常情况下,带有 UNION、MINUS、INTERSECT 的 SQL 语句可以通过 重写查询 来优化性能,避免不必要的排序操作。