left join 优化如图.左边是我查出来的.用哪种可以查出来右边的哪种结构.
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/04 03:08:37
![left join 优化如图.左边是我查出来的.用哪种可以查出来右边的哪种结构.](/uploads/image/z/12340571-59-1.jpg?t=left+join+%E4%BC%98%E5%8C%96%E5%A6%82%E5%9B%BE.%E5%B7%A6%E8%BE%B9%E6%98%AF%E6%88%91%E6%9F%A5%E5%87%BA%E6%9D%A5%E7%9A%84.%E7%94%A8%E5%93%AA%E7%A7%8D%E5%8F%AF%E4%BB%A5%E6%9F%A5%E5%87%BA%E6%9D%A5%E5%8F%B3%E8%BE%B9%E7%9A%84%E5%93%AA%E7%A7%8D%E7%BB%93%E6%9E%84.)
left join 优化如图.左边是我查出来的.用哪种可以查出来右边的哪种结构.
left join 优化
如图.左边是我查出来的.用哪种可以查出来右边的哪种结构.
left join 优化如图.左边是我查出来的.用哪种可以查出来右边的哪种结构.
、因为T1表式主表,所以
【select COUNT(DISTINCT T1.A1) from T1】和你求出的
【COUNT(DISTINCT T1.A1)】值是一样的.
2、而由于T2等是从表并且你使用了【COUNT(DISTINCT T2.B1)】因此null值会被排除掉,实际上和下面的语句求出的值是一样的
select COUNT(DISTINCT T2.B1) from T1 inner join T2 on T1.A1 = T2.A1;
3、从上面的分析可以看出你使用【left join】的目的只有一个就是得到【T1】表全部数据的【COUNT(DISTINCT T1.A1)】,所以试试改成下面的sql是否性能能够快些
select cnt1+cnt2+cnt3 from(
(select COUNT(DISTINCT T1.A1) cnt1 from T1 GROUP BY T1.A2, T1.A3)t1,
(select COUNT(DISTINCT T2.B1) cnt2 from T1 inner join T2 on T1.A1 = T2.A1 GROUP BY T1.A2, T1.A3)t2,
(select COUNT(DISTINCT T3.C1) cnt3 from T1 inner join T3 on T1.A1 = T3.A1 inner join T4 on T3.C1 = T4.C1 GROUP BY T1.A2, T1.A3)t3;
---
以上,希望对你有所帮助.