目录

1、将联表查询简化为单表查询案例

1.1 问题描述

1.2 优化过程

1.2.1 将联表查询修改为单表查询

1.2.2 利用覆盖索引避免回表


1、将联表查询简化为单表查询案例

1.1 问题描述

统计商品sku表中总数量、上架数量、下架数量

SELECTcount(1) AS totalNum,sum(case WHEN sku.on_state = '1' THEN 1 ELSE 0 END) AS saleOnNum,sum(CASE WHEN sku.on_state = '0' THEN 1 ELSE 0 END) AS saleOffNumFROMpro_sku sku  LEFT JOIN pro_spu spu ON sku.spu_id = spu.idwhere 1=1and spu.is_deleted = '0';

执行结果:耗时 5.6 s

开发日志监控:

执行计划如下:

1.2 优化过程

经过认真分析,发现实现同样的sql语义根本不需要进行pro_spu表、pro_sku表的联表查询,只需要对pro_sku表进行单表查询。

1.2.1 将联表查询修改为单表查询

对pro_sku表加一个字段,该字段是pro_spu表冗余到pro_spu表的的一个冗余字段,优化之后的sql如下:

SELECTcount(1) AS totalNum,sum(case WHEN sku.on_state = '1' THEN 1 ELSE 0 END) AS saleOnNum,sum(CASE WHEN sku.on_state = '0' THEN 1 ELSE 0 END) AS saleOffNumFROM pro_sku sku   where sku.is_deleted = '0';

执行结果如下:耗时0.9 s

执行计划如下:

总结:

对单表进行全表扫描的效果比联表查询的效果要好得多,执行耗时只为原来sql语句执行时间的1/6。

1.2.2 利用覆盖索引避免回表

对索引spu_id进行修改,将单列索引修改为(spu_id,on_state)联合索引,因为select 子句中,只需要返回on_state字段,所以将单列索引修改为联合索引之后,查询不需要再进行回表。

执行结果如下:耗时3.6s

执行计划如下: Using Index提示不需要进行回表

将联表查询简化为单表查询案例相关推荐

  1. server多笔记录拼接字符串 sql_第四章、SQL Server数据库查询大全(单表查询、多表连接查询、嵌套查询、关联子查询、拼sql字符串的查询、交叉查询)...

    4.1.查询的类型 declare @value as int set @value = 50 select  'age:'as age,2008 years,@valueas va --这种查询时跟 ...

  2. mysql单表查询实例_MySQL简单查询详解-单表查询

    MySQL简单查询详解-单表查询 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查询的执行路径 一条SQL查询语句的执行过程大致如下图所示: 1>.客户端和服务端通过my ...

  3. 笔记:3.4 《数据库系统概论》之数据查询---SELECT(单表查询、连接查询、嵌套查询、集合查询、多表查询)

    对 3.2 数据查询-SELECT(单表查询.连接查询.嵌套查询.集合查询.多表查询)的转载与学习笔记: 0.前言 本篇文章是对<数据库系统概论>王珊老师主编的数据库查询SELECT部分做 ...

  4. 记录一次慢SQL优化:大表关联小表->拆解为单表查询

    前言: 最近一段时间总是会收到数据库CPU报警 一查发现有一个特别慢的SQL,调用的频率很高,并且查一次SQL15s以上,十分影响性能 SQL分析 这个sql是一个分页查询的sql,每次查出10条主表 ...

  5. 快递单号发出物流如何查询,快递单号查询物流方法

    当你有大批的快递单号,如何快速查询快递单号发出的物流信息呢?这里分享一个批量查询快递单号物流的方法,下面来看操作步骤. 准备一个查询工具,快递批量查询高手.在浏览器上搜索可下载到,先注册后再登录上. ...

  6. 3.4 《数据库系统概论》之数据查询---SELECT(单表查询、连接查询、嵌套查询、集合查询、多表查询)

    文章目录 0.前言 1.思维导图 2.Student/SC/Course表数据及结构 3.SELECT语句的一般格式 4.单表查询 (1)选择表中的若干列 ① 查询指定列 ② 查询全部列 ③ 查询经过 ...

  7. mysql左连接去重查询_mysql之单表查询、多表查询

    mysql查询 单表查询 """ 增: insert [into] [数据库名.]表名[(字段1[,...,字段n])] values (数据1[,...,数据n])[, ...

  8. 【数据库系统原理作业】五、数据查询中的单表查询

    上一次的作业: https://blog.csdn.net/qq_21331159/article/details/115165279 单表查询 一.选择表中的若干列 ①.查询指定列 ②.查询全部列 ...

  9. mysql怎么进行单表查询_MySQL之单表查询

    一.单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二.关键 ...

最新文章

  1. mysql 数据泵_Oracle 数据泵详解
  2. centos7上安装配置tomcat8.5
  3. 国内做事就要高调——财富人生:邹果庆:中国新蛋网总裁
  4. 阿里巴巴有一群全年无休从不领工资的高智商员工
  5. java包含点_Java的21个核心技术点,你知道吗
  6. mysql数据库存储数据的过程_[数据库]MySql存储过程总结
  7. 【机器学习基础】前置知识(二):30分钟掌握常用Jupyter Notebook用法
  8. 区域数据导入功能(OCUpload插件使用)
  9. 《自然》杂志:中国人越来越沉迷于对着一个叫“区块链”的东西胡言乱语
  10. LUN/PV/VG/LV
  11. IEBrowser IE升级工具 下载
  12. 30分钟掌握用Python写网络爬虫,入门到实战教程,黑客入门第一步
  13. TS - 勉强入个门儿
  14. 虚拟机安装的Ubuntu下载速度慢怎么办
  15. 机房动环监控系统方案
  16. Ubuntu的root
  17. mpeg1视频解码标准简介
  18. 单元测试|Unittest setup前置初始化和teardown后置操作
  19. SpringBoot通过自定义注解实现模板方法设计模式
  20. IDA调试修改内存数据

热门文章

  1. 笔记本蓝屏及提示iastor.sys的处理
  2. 2006年第五届“中国软件收入规模前100名企业”
  3. 基于Python、Keras和OpenCV的实时人脸活体检测
  4. 能激发购买欲的颜色解说!服装实体店做直播必备!
  5. python时间戳打印
  6. 我的世界服务器无限开号,我的世界1.7.X-1.12.X无限瞬间生存服务器
  7. stm32f0独立看门狗配置
  8. 三次握手过程和四次握手过程
  9. 蓝旭工作室2021JavaScript基础
  10. 通过nodeJS如何实现爬虫功能