SQL连接查询优化技巧探讨:第五篇姊妹篇,有何新见解?

2026-05-23 08:410阅读0评论SEO教程
  • 内容介绍
  • 相关推荐

本文共计3288个文字,预计阅读时间需要14分钟。

SQL连接查询优化技巧探讨:第五篇姊妹篇,有何新见解?

上篇SQL优化篇,更多偏向于优化的思维概念,先抛出4个优化问题中,篇幅过长,仅对前两个问题进行了解析。接下来,我们来聊聊SQL的连接查询优化,更偏向于实际应用。

上篇的sql优化篇章,更多偏向于优化的思想概念,先前抛出的4个优化问题中,篇幅过长,只对前两个问题进行了解析。

接下来我们一起来谈谈sql的连接查询优化,更偏向于实际运用,并对如下两个问题进行探讨。篇幅过长,请耐心看完。

1.嵌套查询、HASH连接、排序合并连接、笛卡尔连接等怎样玩能达到最优?

2.INEXISTS谁快谁慢?

嵌套循环(NESTED LOOPS)

嵌套循环的算法:驱动表返回一行数据,通过连接列传值给被驱动表,驱动表返回多少行,被驱动表就要被扫描多少次。

这里我补充一下驱动表和被驱动表:理解驱动表和被驱动表的本质,需要理解顺序读取和随机读取的差异,内存适合随机读取,硬盘则顺序读取的效率比较好。

驱动表,作为外层循环,若进行一次IO将所有数据读取,则适合顺序读取,一次性批量的把数据读取出来,不考虑缓存情况下。

被驱动表,即里层循环,由于需要不断的拿外层循环传进来的每条记录去匹配,所以如果是适合随机读取的,那么效率就会比较高。如果表上有索引,实际上就意味着这个表是适合随机读取的。

阅读全文

本文共计3288个文字,预计阅读时间需要14分钟。

SQL连接查询优化技巧探讨:第五篇姊妹篇,有何新见解?

上篇SQL优化篇,更多偏向于优化的思维概念,先抛出4个优化问题中,篇幅过长,仅对前两个问题进行了解析。接下来,我们来聊聊SQL的连接查询优化,更偏向于实际应用。

上篇的sql优化篇章,更多偏向于优化的思想概念,先前抛出的4个优化问题中,篇幅过长,只对前两个问题进行了解析。

接下来我们一起来谈谈sql的连接查询优化,更偏向于实际运用,并对如下两个问题进行探讨。篇幅过长,请耐心看完。

1.嵌套查询、HASH连接、排序合并连接、笛卡尔连接等怎样玩能达到最优?

2.INEXISTS谁快谁慢?

嵌套循环(NESTED LOOPS)

嵌套循环的算法:驱动表返回一行数据,通过连接列传值给被驱动表,驱动表返回多少行,被驱动表就要被扫描多少次。

这里我补充一下驱动表和被驱动表:理解驱动表和被驱动表的本质,需要理解顺序读取和随机读取的差异,内存适合随机读取,硬盘则顺序读取的效率比较好。

驱动表,作为外层循环,若进行一次IO将所有数据读取,则适合顺序读取,一次性批量的把数据读取出来,不考虑缓存情况下。

被驱动表,即里层循环,由于需要不断的拿外层循环传进来的每条记录去匹配,所以如果是适合随机读取的,那么效率就会比较高。如果表上有索引,实际上就意味着这个表是适合随机读取的。

阅读全文