问如下SQL哪条效率高
有三张表A,B,C
A表字段:a,ab
B表字段:ab,bc
C表字段:bc,c
问如下哪条效率高?
select A.a,B.ab,C.c from A inner join B on A.ab=B.ab inner join C on B.bc=C.bc
select AA.a,AA.ab,(select c from C where AA.bc=C.bc) as c from (select A.a,A.ab,(select bc from B where A.ab=B.ab) as bc from A) AA
------解决方案--------------------我选第一个
第一个语句较为灵活,sql引擎可以选择3中连接方式中最合适的一个
貌似第二个语句只能循环嵌套
------解决方案--------------------1?
------解决方案--------------------第一个
连接效率还是比较好的
------解决方案--------------------1
------解决方案--------------------1
------解决方案--------------------1、不要拿两个功能不同的语句来比较效率,这样没有意义
2、一般情况,能用连接的不要用子查询,因为连接无论从效率还是可读性还是健壮性都优于子查询
------解决方案--------------------大致同楼上.
两条语句在不同的表数据组合(这里指两条语句对相同的数据处理, 不同指的是数据场合不同)下取的结果都不一样,根本没有可比性.
如果在数据结果一致的情况下,这种嵌套子查询的写法毫无疑问效率低下. 因为它不能被优化为连接方式执行. 某些子查询看起来效率低,但通过优化还是按内连的方式执行的.