连接查询的原理
如果需要对两个表进行连接查询,没有任何条件限制是,最终的查询结果条数是两张表的记录条数的乘积,这也是笛卡尔乘积。可以通过加条件过滤来避免笛卡尔乘积现象,但是扫描的次数并不会变化。具体过程是假设对tb1和tb2进行连接查询,则首先会在tb1找到第一个元组,然后从头开始扫描tb2表,逐一比对与tb1第一个元组相对应的tb2元组,找到之后将tb1和tb2数据连接起来。如果tb2扫描一遍也没有找到,则开始匹配tb1的第二元组。直到tb1扫描完毕。返回查询到的连接表。
通过连接查询的原理可以清楚,两个表的连接查询就是一个两层循环,即扫描的行数是tb1和tb2行数的乘积。
优化的原则是将连接操作尽量放在最后,尽可能的把单表查询和选择操作放在前面,这样在一定程度上能够减少连接查询表的记录数,提高执行效率。
网上的案例:https://blog.csdn.net/jim_LoveQ/article/details/88820347
https://blog.csdn.net/xiaoguangtouqiang/article/details/80860597
https://blog.csdn.net/qq_42022528/article/details/85131447?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EsearchFromBaidu%7Edefault-1.pc_relevant_baidujshouduan&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EsearchFromBaidu%7Edefault-1.pc_relevant_baidujshouduan