leftjoin联查提⾼执⾏性能
本⽂为博主原创,未经允许不得转载:
在项⽬应⽤中,很多功能需要多张数据库表联查,甚⾄跨数据库查询获取数据。sql的执⾏性能很能影响
服务的体验感,今天就遇到了这样问题,原来的sql是这样的:
select c.CLIENTNAME,c.CLIENTID,COUNT(c.CLIENTNAME),z.ZONENAME from SCP_DB.TBL_USER_INFO u,smartcommondb.tbl_stat_report_info s,smartcommondb.tbl_client_info c,smartcommondb.tbl_zone_info z where u.LOGINNAME=s.ActionUser and u.CLIENTID=c.CLIENTID and c.ZONEID=z.ZONEID GROUP BY c.CLIENTID;
当我拿出来执⾏这句sql的时候,发现这句sql要执⾏5秒中才能执⾏完,所以在很多项⽬的优化中,
优化sql也很重要,因为5秒钟也要等很长的时间。
所以我修改了这条sql:
sql left join 多表连接select c.CLIENTNAME,c.CLIENTID,COUNT(c.CLIENTNAME) AS handleNum,z.ZONENAME from sma
rtcommondb.tbl_client_info c LEFT JOIN SCP_DB.TBL_USER_INFO u ON u.CLIENTID=c.CLIENTID
LEFT JOIN smartcommondb.tbl_stat_report_info s ON u.LOGINNAME=s.ActionUser LEFT JOIN smartcommondb.tbl_zone_info z ON c.ZONEID=z.ZONEID GROUP BY c.CLIENTID 当我执⾏新写的这条sql时,执⾏的时间是0.3秒,发现⽤了left join之后,竟然能如此提⾼sql的执⾏性能。
于是研究了下left join 的⽤法。在这便进⾏简单的总结。
LEFT JOIN 关键字会从左表那⾥返回所有的⾏,即使在右表 (table_name2) 中没有匹配的⾏。
经常要连表统计数据时,要求当某张表中对应的数据为空时也要显⽰时,就可以⽤left join 。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。