如何通过将不常用的表为视图来简化SQL中深度LEFT JOIN的优化?
- 内容介绍
- 相关推荐
本文共计867个文字,预计阅读时间需要4分钟。
在多个LEFT JOIN操作中,若连接的表数据量较大,MySQL很容易退化成嵌套循环(NLJ),导致扫描行数大幅增加。例如,对`orders`、`users`、`addresses`和`logistics`四张表进行LEFT JOIN,若每张表扫描1万行,中间结果也可能膨胀到上亿行。此时,使用`EXPLAIN`分析可以发现`rows`列数值很高,`Extra`列出现`Using temporary; Using filesort`,这表明出现了典型的问题。
本文共计867个文字,预计阅读时间需要4分钟。
在多个LEFT JOIN操作中,若连接的表数据量较大,MySQL很容易退化成嵌套循环(NLJ),导致扫描行数大幅增加。例如,对`orders`、`users`、`addresses`和`logistics`四张表进行LEFT JOIN,若每张表扫描1万行,中间结果也可能膨胀到上亿行。此时,使用`EXPLAIN`分析可以发现`rows`列数值很高,`Extra`列出现`Using temporary; Using filesort`,这表明出现了典型的问题。

