JOIN 类型速览
- INNER
- LEFT
- RIGHT
- CROSS
返回两张表匹配行,常用于获取具备关联记录的数据。
多表连接示例
子查询与 EXISTS
EXISTS 通常在子查询返回大量行时更高效,优化器可在找到首行后提前终止。公用表表达式(CTE)
递归 CTE(8.0+)
SET cte_max_recursion_depth = 1000; 控制深度。
聚合与分组
GROUP BY后可使用HAVING对聚合结果过滤GROUPING SETS、ROLLUP、CUBE可生成多层级统计(MySQL 支持ROLLUP)
窗口函数(8.0+)
ROW_NUMBER、RANK、DENSE_RANK、LAG、LEAD、NTILE、SUM/AVG OVER。
集合运算
条件聚合与透视
性能提示
EXPLAIN验证连接顺序与索引命中,必要时使用STRAIGHT_JOIN强制顺序- 避免在 JOIN 条件中对列进行函数转换
- 对聚合查询可考虑建立覆盖索引或使用物化视图(手动维护)