当前位置: 首页 > news >正文

MYSQL一个优化的过程

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

背景:优化一个20数据的表查询
###优化前
 EXPLAIN
SELECT DISTINCT
  ect.contract_no AS contractCode,
  ect.contract_name AS contractName,
  NULL AS supplierId,
  ect.b_name AS supplierName
FROM
  `eva_test` ect
  LEFT JOIN td_outline_test toa
    ON ect.`contract_no` = toa.`contract_no`
WHERE toa.`contract_no` IS
ORDER BY ect.`id`;

###优化后
 EXPLAIN
SELECT
  ect.contract_no AS contractCode,
  ect.contract_name AS contractName,
  NULL AS supplierId,
  ect.b_name AS supplierName
FROM
  `eva_test` ect
  LEFT JOIN td_outline_test toa
    ON ect.`contract_no` = toa.`contract_no`
WHERE toa.`contract_no` IS NULL 
 ORDER BY ect.`id`; ###查询合同编号的数量大于1的合同

###使用EXISTS ,在使用优化后
   EXPLAIN
  SELECT
    ect_out.contract_no AS contractCode,
    ect_out.contract_name AS contractName,
    NULL AS supplierId,
    ect_out.b_name AS supplierName
  FROM
    eva_test ect_out
  WHERE NOT EXISTS
    (SELECT
      toa.`contract_no`
    FROM
      td_outline_test toa
    WHERE ect_out.`contract_no` = toa.`contract_no`)
  ORDER BY ect_out.`id`;
  
 ###使用eva_test.contract_no字段的索引,不推荐使用
 SELECT 
  ect_out.contract_no AS contractCode,
  ect_out.contract_name AS contractName,
  NULL AS supplierId,
  ect_out.b_name AS supplierName
FROM
  eva_test ect_out
WHERE ect_out.`contract_no` NOT IN
  (SELECT DISTINCT
    ect.contract_no
  FROM
    `eva_test` ect
    LEFT JOIN td_outline_test toa
      ON ect.`contract_no` = toa.`contract_no`
  WHERE toa.`contract_no` IS NOT NULL) ;
  
  ####辅助查询
  SELECT
    contract_no,
    COUNT(contract_no) AS COUNT
  FROM
    eva_test
  GROUP BY contract_no
  HAVING COUNT(contract_no) > 1
  ORDER BY countDESC;

转载于:https://my.oschina.net/maojindaoGG/blog/3029424

相关文章:

  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • React:输入框新增/取消一行如何处理(X-mind图)
  • K8S 生态周报| 2019.03.25~2019.03.31
  • 无人车制胜关键:Apollo决策系统全面剖析
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • pika开源:替代WebPack的全新JS构建工具
  • MySql批量插入与唯一索引问题
  • CF451E Devu and Flowers
  • Android之RxJava详解
  • 知道大数据却不清楚工业大数据,知识架构“欠”在哪里?
  • 些许注意事项(初学)
  • 漫话:如何给女朋友解释什么是乐观锁与悲观锁
  • koa2框架的使用与解析
  • Beaglenone读取编码器数据
  • 数据库引擎类型
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • canvas 高仿 Apple Watch 表盘
  • CAP理论的例子讲解
  • cookie和session
  • ES6--对象的扩展
  • happypack两次报错的问题
  • javascript数组去重/查找/插入/删除
  • Material Design
  • PermissionScope Swift4 兼容问题
  • Python爬虫--- 1.3 BS4库的解析器
  • Spring Cloud中负载均衡器概览
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 关于使用markdown的方法(引自CSDN教程)
  • 回流、重绘及其优化
  • 开源地图数据可视化库——mapnik
  • 前端工程化(Gulp、Webpack)-webpack
  • 我看到的前端
  • 一文看透浏览器架构
  • 优秀架构师必须掌握的架构思维
  • !$boo在php中什么意思,php前戏
  • #Ubuntu(修改root信息)
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (1)Nginx简介和安装教程
  • (6)STL算法之转换
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (十六)串口UART
  • (十三)Flask之特殊装饰器详解
  • (图)IntelliTrace Tools 跟踪云端程序
  • (一)UDP基本编程步骤
  • (转载)利用webkit抓取动态网页和链接
  • .net framework 4.0中如何 输出 form 的name属性。
  • .net framework4与其client profile版本的区别
  • .Net Memory Profiler的使用举例
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .NET成年了,然后呢?
  • .net打印*三角形
  • [《百万宝贝》观后]To be or not to be?
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]