left join联查提高执行性能

本文为博主原创,未经允许不得转载:

在项目应用中,很多功能需要多张数据库表联查,甚至跨数据库查询获取数据。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:

select c.CLIENTNAME,c.CLIENTID,COUNT(c.CLIENTNAME) AS handleNum,z.ZONENAME from smartcommondb.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 。

具体可参考:https://www.cnblogs.com/huahua035/p/5718469.html

 

posted @ 2017-11-23 16:05  香吧香  阅读(8056)  评论(0编辑  收藏  举报