本文导读
本文介绍MySQL数据库中的左连接、右连接、内连接与Hash连接的工作原理,并分析子查询与 JOIN 的不同,根据本文所学提供一些工作中需要掌握的实战技巧。
一、MySQL数据库JOIN连接
在多个表上创建索,并且多个表JOIN和子查询语句相对比较困难。许多开发人员不自觉地认为JOIN 会降低 SQL 的性能效率,因此他们将多表 SQL 拆分为单表查询,认为这会影响SQL执行的效率,原因是开发人员不了解JOIN实现过程。
联接之间的表关联使用索引进行匹配,假设表R和表S是连接的。
表R被称为驱动表,表R中通过WHERE条件过滤的数据将在表S对应的索引上逐个查询。如果驱动表R的数据量不大,则上述算法非常有效。
以下三种 JOIN 类型,驱动表各是哪张表:
SELECT * FROM R LEFT JOIN S ON R.x = S.x WEHRE ...
SELECT * FROM R RIGHT JOIN S ON R.x = S.x WEHRE ...
SELECT * FROM R INNER JOIN S ON R.x = S.x WEHRE ...
复制代码
1、inner join
对于 INNER JOIN,驱动表可能是表 R,也可能是表 S。显示左边右边共有的数据。
在这种场景下,谁需要查询的数据量越少,谁就是驱动表。 我们来看下面的例子
SELECT * FROM R INNER JOIN S ON R.x = S.x WHER