zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    《结对-贪吃蛇游戏-最终程序》
    《团队-科学计算器-模块测试过程》
    Bootstrap
    Angularjs的核心概念
    jQuery Ajax
    浏览器为什么会有兼容性问题
    BFC
    sass
    HTML5
    面向过程和面向对象编程
  • 原文地址:https://www.cnblogs.com/zjdxr-up/p/7885391.html
Copyright © 2011-2022 走看看