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
left join联查提高执行性能的更多相关文章
- SQL Server SQL性能优化之--通过拆分SQL提高执行效率,以及性能高低背后的原因
复杂SQL拆分优化 拆分SQL是性能优化一种非常有效的方法之一, 具体就是将复杂的SQL按照一定的逻辑逐步分解成简单的SQL,借助临时表,最后执行一个等价的逻辑,已达到高效执行的目的 一直想写一遍通过 ...
- [.net 面向对象程序设计进阶] (17) 多线程(Multithreading)(二) 利用多线程提高程序性能(中)
[.net 面向对象程序设计进阶] (17) 多线程(Multithreading)(二) 利用多线程提高程序性能(中) 本节要点: 上节介绍了多线程的基本使用方法和基本应用示例,本节深入介绍.NET ...
- [.net 面向对象程序设计进阶] (16) 多线程(Multithreading)(一) 利用多线程提高程序性能(上)
[.net 面向对象程序设计进阶] (16) 多线程(Multithreading)(一) 利用多线程提高程序性能(上) 本节导读: 随着硬件和网络的高速发展,为多线程(Multithreading) ...
- PHP提高网站性能的一些方法
前段时间面试问到了这个问题,回答的不是很全面,就去问了度娘,得到了一些比较全的答案,由于出处较多就没法确定原文出处了.下面是分享的答案. 一.大型网站性能提高策略: 大型网站,比如门户网站,在面对大量 ...
- (转)MySQL join语法解析与性能分析
文章转载的:http://www.cnblogs.com/BeginMan/p/3754322.html 一.join语法概述 join用于多表中字段之间的联系,语法如下: ... FROM tabl ...
- T-SQL怎样提高数据库性能
总结: 1.书写问题 2.表连接方式 3.索引的抉择 4.执行计划之参数嗅探 5.子查询与表连接的效率 6.临时表.CTE.表变量的选择 7.常用sp与select的缓存命中 8.锁(善用nolock ...
- [转]Mysql Join语法解析与性能分析
转自:http://www.cnblogs.com/BeginMan/p/3754322.html 一.Join语法概述 join 用于多表中字段之间的联系,语法如下: ... FROM table1 ...
- 自适应查询执行:在运行时提升Spark SQL执行性能
前言 Catalyst是Spark SQL核心优化器,早期主要基于规则的优化器RBO,后期又引入基于代价进行优化的CBO.但是在这些版本中,Spark SQL执行计划一旦确定就不会改变.由于缺乏或者不 ...
- SQL Server-聚焦过滤索引提高查询性能(十)
前言 这一节我们还是继续讲讲索引知识,前面我们讲了聚集索引.非聚集索引以及覆盖索引等,在这其中还有一个过滤索引,通过索引过滤我们也能提高查询性能,简短的内容,深入的理解,Always to revie ...
随机推荐
- java8,方法引用
1:方法引用,https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html 当我们使用lambda表达式去创建一个 ...
- openstack 部署笔记--keystone
控制节点 安装keystone包 # yum install openstack-keystone httpd mod_wsgi keystone配置文件 # vim /etc/keystone/ke ...
- numpy.random.rand()/randn()/randint()/normal()/choice()/RandomState()
这玩意用了很多次,但每次用还是容易混淆,今天来总结mark一下~~~ 1. numpy.random.rand(d0,d1,...,dn) 生成一个[0,1)之间的随机数或N维数组 np.random ...
- Selenium - Css Selector 使用方法
什么是Css Selector? Css Selector定位实际就是HTML的Css选择器的标签定位 工具 Css Selector可以下载火狐浏览器插件,FireFinder 或 FireBug和 ...
- pythonon ddt数据驱动二(json, yaml 驱动)
这一篇主要是关于文件的数据驱动. 一.通过json文件驱动 @ddt class MyTest(unittest.TestCase): @file_data('test_data_list.json' ...
- jmeter 逻辑控制器Logic Controller详解
Jmeter之逻辑控制器(Logic Controller) 前言: 1. Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in w ...
- ajax课2JSON
1.ajax优点: a.页面无刷新 b.用户体验度较好,不会打断用户操作 c.按需求获取数据,不需要返回一个完整的页面 d.是标准的技术,不需要安装任何的插件 应用场景:注册.表格数据的增删改 2.J ...
- python认识快速入门(一)
接下来的一个多月开始学习python,在记录这些随笔的同时,如果你们能看到,希望能帮助到你们,如果有错误也请你们给指教! 主要记录的是对python的一个整体认识. 1.print 语句及“Hello ...
- VNC的安装和常用命令
主要参考文章:http://www.cnblogs.com/coderzh/archive/2008/07/16/1243990.html http:/ ...
- SQL学习之SqlMap SQL注入
sqlmap也是渗透中常用的一个注入工具,其实在注入工具方面,一个sqlmap就足够用了,只要你用的熟,秒杀各种工具,只是一个便捷性问题,sql注入另一方面就是手工党了,这个就另当别论了. 今天把我一 ...