Join的实现原理 Nested Loop Join
通过驱动表的结果集作为循环基础数据,然后一条一条的通过该结果集中的数据作为过滤条件到下一个表中查询数据,然后合并结果;
如果还有第三个参与Join,则再通过前两个表的Join结果集作为循环基础数据,再一次通过循环查询条件到第三个表中查询数据;
Join的优化
- 1.尽可能减少Join语句中的Nested Loop的循环总次数(减少驱动表的结果集)
- 2.优先优化Nested Loop的内层循环
被执行次数最多的检索,优化每一执行所消耗资源 ,那么每次执行优化一点点,节省一点点资源,在总量计算上能够节约
很大的资源;
- 3.保证Join语句中被驱动表上Join条件字段已经被索引(减少循环次数)
- 4.当无法保证被驱动表的Join条件字段被索引且内存资源充足的前提,不要太吝啬Join Buffer的设置
- 5.适度冗余,让Query减少join次数
网友评论