记两则亲身经历的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的两条优化小技巧相关推荐

  1. 【一起去大厂系列】什么是回表查询?怎么优化回表查询?

    提到什么是回表查询之前,不得不先解释一下InnoDB的索引. InnoDB的索引 InnoDB有两大类索引,一类是聚集索引(Clustered Index),一类是普通索引(Secondary Ind ...

  2. 【一起去大厂系列】深入理解MySQL中where 1 = 1的用处

    首先,明白一个前提条件: where 1 = 1; --永远为真 也就是说: select * from student; 等同于: select * from student where 1 = 1 ...

  3. Mixly系列 | 关于Blynk,你或许不知道的几个小技巧

    随着 Mixly 软件的不断更新和完善,功能也越来越强大,除了新增很多编程模块以外,还新增了很多硬件支持,比如 Blynk 物联网模块.ESP32 和掌控板等.但是,虽然功能和模块增多了,但是很多老师 ...

  4. 服务器摆放需要预留U位么_卧室系列 | 选床+摆放新姿势,提升睡眠品质小技巧...

    最近忽如一夜秋风来,满屏皆是"打工人",一个打工人的心酸引发千万打工人的共鸣,自嘲背后,透露着心酸. "打工人"自我调侃有火一般的热情,钢铁般的意志,为了生存, ...

  5. 自学算法的那么多人,凭什么他能去大厂和做算法带队人!

    今天要给大家推荐的是一个推荐系统领域的算法大牛:Thinkgamer.首先我们回答标题中的问题: 自学算法的那么多人,凭什么他能去大厂和做算法带队人! 他在校期间,自学了Hadoop,Spark和算法 ...

  6. 作为3-5年的iOS开发者:你为什么迟迟进不去大厂呢?

    本文对象是内心渴望进大厂的童鞋,希望你能咬牙看完,转折点也许就发生在今天. 这几年来,至少几十个个朋友跟我聊起这个话题,想进大厂-一门心思进大厂,但是在聊的过程中,我就可以判定: 当下及未来一段周期的 ...

  7. 垃圾去哪里系列之可回收物

    自从国家大力推行垃圾分类以来,居民们的环保意识逐渐加强,一些指定强制执行垃圾分类的城市,居民的垃圾分类工作也逐步到位.也有不少人会担心:我们辛辛苦苦分好的垃圾,最后如果混在一起清运,那我们不是白分了? ...

  8. 计算机研究生就业方向之去大厂做人工智能

    我一直跟学生们说你考计算机的研究生之前一定要想好你想干什么,如果你只是转码,那么你不一定要考研,至少以下几个职位研究生是没有啥优势的: 1,软件测试工程师(培训一下就行) 2,前端开发工程师(本科培训 ...

  9. 聊聊(学历低、非科班、培训)真的进不去大厂吗?

    前言 这几天一直有同学问我:我想进大厂,怎么进大厂? 通过跟部分同学的聊天我就可以判定: 当下及未来一段周期的你,如果不发生根本性改变,是一定进不去大厂的,甚至这辈子大厂都跟你无缘. 每个人的职业路线 ...

最新文章

  1. 10 张图打开 CPU 缓存一致性的大门
  2. Linux 中的虚拟网络
  3. 【数组】Find Peak Element
  4. ironpython是什么2.7_是否可以在IronPython2.7.5中使用请求?
  5. 《统计学》学习笔记之导论
  6. css3怎么设置logo,纯CSS3实现的LOGO标志 ABN AMRO CSS3 logo
  7. linux用户操作的日志,linux 用户操作记录并录入日志
  8. 怎样在php中使用PDF文档功能
  9. [HNOI2009]有趣的数列
  10. SAP云解决方案和企业本地部署(On-Premise)混合架构下的安全认证权限管理
  11. 实验2-2-7 整数四则运算 (10 分)
  12. 软件需求工程与UML建模第十二周作业
  13. 手把手原生js简单轮播图
  14. 关于计算机组装与维护的论文,计算机组装与维护论文范文
  15. Azkaban 任务调度系统(使用和小技巧)
  16. 数据库定时备份linux篇
  17. 红帽RHCE之查看进程
  18. C#获取文件的Content-Type(MIME Type)的三种方法
  19. php有哪几种运行环境,php有哪些运行环境
  20. 十进制和二进制简单计算

热门文章

  1. 第50讲:Scrapy 部署不用愁,Scrapyd 的原理和使用
  2. scrapy发送翻页请求
  3. 你还在 new 对象吗?Java8 通用 Builder 了解一下?
  4. 曹大带我学 Go(10)—— 如何给 Go 提性能优化的 pr
  5. JQuery绑定及效果
  6. 【线上分享】基于AI的超分辨技术在RTC领域的技术难点与挑战
  7. 腾讯牌番茄,新鲜上市!
  8. 打造轻量级可视化数据爬取工具-菩提
  9. Facebook开源计算机视觉目标检测平台Detectron
  10. Paxos第三篇 - Paxos成员组变更