【一起去大厂系列】针对left join以及limit的两条优化小技巧
记两则亲身经历的sql优化技巧:
一、主表数据不到100万,以下查询结果集约200左右,第一条sql执行效率为40ms,第二条为200ms,使用上面方法,其效率明显优于left join:
sql1:
SELECT SQL_NO_CACHE usersr_id ,businessunit_id,ifnull((SELECT name FROM sync_businessunit WHERE id= obj.businessunit_id),'无名' ) businessunit_name,ifnull((SELECT fullname FROM sync_usersys WHERE id= obj.usersr_id),'无名' ) sr_name,SUM(price) price,IFNULL((SELECT target FROM analysis_target WHERE year=2017 and month=4 and usersr_id = obj.usersr_id ),0) target
FROM analysis_cusorder obj
WHERE send_time >= '2017-02-01' AND send_time < '2017-03-01' #BETWEEN '2017-02-01' and '2017-02-28'
GROUP BY usersr_id
ORDER BY usersr_id;
sql2:
SELECT SQL_NO_CACHE o.usersr_id,o.businessunit_id,u.`name` as businessunit_name,us.fullname,t.target as zongzhibiao,SUM(o.price) as zongdacheng
FROM analysis_cusorder o
LEFT JOIN analysis_target t ON o.usersr_id = t.usersr_id and t.`year`=2017 and t.`month` = 4
LEFT JOIN sync_businessunit u ON o.businessunit_id = u.id
LEFT JOIN sync_usersys us ON o.usersr_id = us.id
WHERE o.send_time BETWEEN '2017-02-01' and '2017-02-28' GROUP BY o.usersr_id;
二、为针对limit的优化,一般表数据超过1000万,limit基本就废了,需采用sql1的方法进行优化,效率相关极为明显,以下语句为使用php框架后的写法:
sql1:
$query = $this->db->select('id,third_id,recommend_menus')->
where("id > $maxid and recommend_menus != ''")->
order_by("id asc")->
limit($perpage)->
get('crawler_merchant');
sql2:
$query = $this->db->select('id,third_id,recommend_menus')->
limit($perpage, $offset)->
get('crawler_merchant');
【一起去大厂系列】针对left join以及limit的两条优化小技巧相关推荐
- 【一起去大厂系列】什么是回表查询?怎么优化回表查询?
提到什么是回表查询之前,不得不先解释一下InnoDB的索引. InnoDB的索引 InnoDB有两大类索引,一类是聚集索引(Clustered Index),一类是普通索引(Secondary Ind ...
- 【一起去大厂系列】深入理解MySQL中where 1 = 1的用处
首先,明白一个前提条件: where 1 = 1; --永远为真 也就是说: select * from student; 等同于: select * from student where 1 = 1 ...
- Mixly系列 | 关于Blynk,你或许不知道的几个小技巧
随着 Mixly 软件的不断更新和完善,功能也越来越强大,除了新增很多编程模块以外,还新增了很多硬件支持,比如 Blynk 物联网模块.ESP32 和掌控板等.但是,虽然功能和模块增多了,但是很多老师 ...
- 服务器摆放需要预留U位么_卧室系列 | 选床+摆放新姿势,提升睡眠品质小技巧...
最近忽如一夜秋风来,满屏皆是"打工人",一个打工人的心酸引发千万打工人的共鸣,自嘲背后,透露着心酸. "打工人"自我调侃有火一般的热情,钢铁般的意志,为了生存, ...
- 自学算法的那么多人,凭什么他能去大厂和做算法带队人!
今天要给大家推荐的是一个推荐系统领域的算法大牛:Thinkgamer.首先我们回答标题中的问题: 自学算法的那么多人,凭什么他能去大厂和做算法带队人! 他在校期间,自学了Hadoop,Spark和算法 ...
- 作为3-5年的iOS开发者:你为什么迟迟进不去大厂呢?
本文对象是内心渴望进大厂的童鞋,希望你能咬牙看完,转折点也许就发生在今天. 这几年来,至少几十个个朋友跟我聊起这个话题,想进大厂-一门心思进大厂,但是在聊的过程中,我就可以判定: 当下及未来一段周期的 ...
- 垃圾去哪里系列之可回收物
自从国家大力推行垃圾分类以来,居民们的环保意识逐渐加强,一些指定强制执行垃圾分类的城市,居民的垃圾分类工作也逐步到位.也有不少人会担心:我们辛辛苦苦分好的垃圾,最后如果混在一起清运,那我们不是白分了? ...
- 计算机研究生就业方向之去大厂做人工智能
我一直跟学生们说你考计算机的研究生之前一定要想好你想干什么,如果你只是转码,那么你不一定要考研,至少以下几个职位研究生是没有啥优势的: 1,软件测试工程师(培训一下就行) 2,前端开发工程师(本科培训 ...
- 聊聊(学历低、非科班、培训)真的进不去大厂吗?
前言 这几天一直有同学问我:我想进大厂,怎么进大厂? 通过跟部分同学的聊天我就可以判定: 当下及未来一段周期的你,如果不发生根本性改变,是一定进不去大厂的,甚至这辈子大厂都跟你无缘. 每个人的职业路线 ...
最新文章
- 10 张图打开 CPU 缓存一致性的大门
- Linux 中的虚拟网络
- 【数组】Find Peak Element
- ironpython是什么2.7_是否可以在IronPython2.7.5中使用请求?
- 《统计学》学习笔记之导论
- css3怎么设置logo,纯CSS3实现的LOGO标志 ABN AMRO CSS3 logo
- linux用户操作的日志,linux 用户操作记录并录入日志
- 怎样在php中使用PDF文档功能
- [HNOI2009]有趣的数列
- SAP云解决方案和企业本地部署(On-Premise)混合架构下的安全认证权限管理
- 实验2-2-7 整数四则运算 (10 分)
- 软件需求工程与UML建模第十二周作业
- 手把手原生js简单轮播图
- 关于计算机组装与维护的论文,计算机组装与维护论文范文
- Azkaban 任务调度系统(使用和小技巧)
- 数据库定时备份linux篇
- 红帽RHCE之查看进程
- C#获取文件的Content-Type(MIME Type)的三种方法
- php有哪几种运行环境,php有哪些运行环境
- 十进制和二进制简单计算