rows表示当前步骤相对于前一步结果需扫描的行数,该SQL需扫描35773乘以8134行,总量极大,处理数据量十分庞大,执行效率将受到显著影响。
1、 原本c表和h表的记录数分别超过4万条和1万条,相当于对这两个表进行笛卡尔积操作的计算量(select * from c,h)。
2、 通过查阅资料了解到,MySQL实现连接操作基于一种名为嵌套循环连接的算法,该机制通过内外层循环匹配数据,从而完成表之间的关联查询。
3、 嵌套循环连接是将驱动表的结果集作为外层循环的基础数据,逐条取出每条记录作为条件,在被驱动表中查找匹配数据,最后将查询结果进行合并输出。
4、 若有第三个表参与连接,则以前两个表的连接结果作为基础数据,循环遍历并依据查询条件在第三个表中检索匹配的数据,完成多表关联操作。
5、 MySQL实现join时,通常采用最直观易懂的算法,循环往复地进行数据匹配与连接操作。
6、 选择合适的驱动表至关重要,其数据量小能大幅减少扫描行数。
