之前主要讲的是怎么去一张表里面取数据,本节主要是阐述一下表与表之间是怎么关联的。不多说,直接上例子
员工表和部门表关联,然后查出员工的基本信息和归属部门信息。
执行计划如图,前面有1.2.3.4.不看。看执行计划是从上往下,从右往左。
也就是说,最右面的先执行,缩进最多的。同样缩进的,上面先执行。
就例子中做出几点说明:
1.表的关联顺序并不会成为其筛选的顺序。员工表在前,但是员工表数据量大约为17w,部门表在后,数据量大约为2w。于是在最后的执行计划中,部门表是先访问的,也就是驱动表,员工表是被驱动表。
2.选择驱动表和被驱动表是根据where 子句条件筛选后的数据量来决定的。数据量小的作为驱动表。不是根据原始表里面的数据量决定的。例如我加一个条件让员工表返回结果集变小,那么驱动表就会变成员工表。