关于SQL数据库中cross join 和inner join用法上的区别?

关于SQL数据库中cross join 和inner join用法上的区别?,第1张

SQL数据库中cross join 和inner join区别为:连接不同、条件筛选不同、语法不同。

一、连接不同

1、cross join :cross join将A表的所有行分别与B表的所有行进行连接,返回的记录数为两个表的记录数乘积。

2、inner join:inner join组合两个表中的记录,只有公共字段之中有相符的值才进行连接。

二、条件筛选不同

1、cross join :cross join不能在连接时进行条件筛选。

2、inner join:inner join可以通过on关键字,在连接时进行条件筛选。

三、语法不同

1、cross join :cross join 的语法不加on关键字,为SELECT * FROM table1 CROSS JOIN table2。

2、inner join:inner join的语法可以加on关键字,为SELECT * FROM table1 INNER JOIN table2 ON table1.field1  = table2.field2。

如果单纯看逻辑运算数量的话,left join的逻辑运算数量会比inner join多,因为inner join只返回左右表的交集,而left join会返回左表中全部记录,若右表无对应记录,则置为null。

Inner join在连接的时候会选取较小的表作为主表进行循环,减少循环的次数。Left join默认使用左表作为主表进行循环。

可能的原因是连接字段没有在大表上建索引,但是在小表上建了索引,而此时left join的左表是大表,在循环查找过程中走小表的索引,而此时inner join中小表为左表,在按连接字段值相等的情况下去查右表的情况下,不走右表的索引,所以导致inner join比left join慢。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9716574.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存