#每天一个知识点#
#数据库#
笛卡尔积是关系代数里的一个概念,表示两个表中的每一行数据任意组合,上图中两个表连接即为笛卡尔积(交叉连接)
笛卡尔积在SQL中的实现方式既是交叉连接(Cross Join)。
如果如果表1有m行a列,表2有n行b列,两表无条件连接时会将两表里所有行两两组合到一起,所形成的表就有m*n行,a+b列。 导致效率特别低,所以在数据库查询时,应尽量避免笛卡尔积的出现。
在实际应用中,笛卡尔积本身大多没有什么实际用处,只有在两个表连接时加上限制条件,才会有实际意义,因此需要避免出现笛卡尔积,比如在 where 加入有效的连接条件【等值连接】
数据库所有连接方式都会先生成临时笛卡尔积表.
这些连接方式包括,
...... 内连接,Inner join 或称等值连接,两个表中匹配的记录
...... 全(外)连接,full join 返回两个表匹配的记录,以及左右两表各自多余的记录
...... 左(外)连接,left join 返回两个表匹配的记录,以及左表多余的记录
...... 右(外)连接,right join 返回两个表匹配的记录,以及右表多余的记录
#数据库#
笛卡尔积是关系代数里的一个概念,表示两个表中的每一行数据任意组合,上图中两个表连接即为笛卡尔积(交叉连接)
笛卡尔积在SQL中的实现方式既是交叉连接(Cross Join)。
如果如果表1有m行a列,表2有n行b列,两表无条件连接时会将两表里所有行两两组合到一起,所形成的表就有m*n行,a+b列。 导致效率特别低,所以在数据库查询时,应尽量避免笛卡尔积的出现。
在实际应用中,笛卡尔积本身大多没有什么实际用处,只有在两个表连接时加上限制条件,才会有实际意义,因此需要避免出现笛卡尔积,比如在 where 加入有效的连接条件【等值连接】
数据库所有连接方式都会先生成临时笛卡尔积表.
这些连接方式包括,
...... 内连接,Inner join 或称等值连接,两个表中匹配的记录
...... 全(外)连接,full join 返回两个表匹配的记录,以及左右两表各自多余的记录
...... 左(外)连接,left join 返回两个表匹配的记录,以及左表多余的记录
...... 右(外)连接,right join 返回两个表匹配的记录,以及右表多余的记录
展开
评论
点赞