交叉连接CROSS JOIN

如果不带WHERE条件子句,它将会返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积;  举例,下列A、B、C 执行结果相同,但是效率不一样:  A:SELECT * FROM table1 CROSS JOIN table2  B:SELECT * FROM table1,table2   C:select * from table1 a inner join table2 b  A:select a.*,b.* from table1 a,table2 b where a.id=b.id  B:select * from table1 a cross join table2 b where a.id=b.id (注:cross join后加条件只能用where,不能用on)  C:select * from table1 a inner join table2 b on a.id=b.id  一般不建议使用方法A和B,因为如果有WHERE子句的话,往往会先生成两个表行数乘积的行的数据表然后才根据WHERE条件从中选择。   因此,如果两个需要求交际的表太大,将会非常非常慢,不建议使用。

posted on 2020-04-28 17:08 青蛙學堂 阅读(11) 评论(0)  编辑 收藏 引用 所属分类: 數據庫

只有注册用户登录后才能发表评论。
<2020年7月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

导航

统计

常用链接

留言簿(7)

随笔分类

随笔档案

收藏夹

青蛙学堂

最新评论

阅读排行榜

评论排行榜

60天内阅读排行