left join跟inner join的区别
时间: 2023-10-19 22:08:13 浏览: 158
SQL之left join、right join、inner join的区别浅析
left join和inner join是SQL中的两种连接操作,它们之间有一些区别。left join是返回左表中的所有记录和右表中与左表的连接字段相等的记录,右表不满足匹配条件的记录返回对应行返回null。而inner join只返回两个表中连接字段相等的行。
left join会查询左表的所有数据,不管右表是否有匹配的记录,右表没有的记录会显示为null;而inner join只展示两个表中都有匹配的数据,不显示没有匹配的数据。
在选择连接算法时,MySQL会优先选择能够使用索引的算法,即Index Nested-Loop Join和Block Nested-Loop Join。如果无法使用索引的话,会选择Simple Nested-Loop Join。
需要注意的是,使用left join时,默认左表作为驱动表,而inner join在连接时会自动选择较小的表作为驱动表,从而减少循环次数,提高效率。因此,在具体使用中需要考虑左表和右表的大小关系,避免左表过大导致循环次数增多,影响性能。
综上所述,left join和inner join的区别在于返回结果集的差异和使用索引的方式不同。left join返回左表全部数据和右表匹配的部分数据,而inner join只返回两个表中匹配的数据;left join不走左表的索引,走右表的索引,而inner join走索引,并且主表(左表)走索引。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
阅读全文