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慢。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)