写了一个SQL,前端往返时间大约1.7秒,最终优化到一共150毫秒左右,应该还可以更好一些

下面说的有点乱,有空再好好总结一下吧。参考文章里面写的还是比较好的,只不过没有组合查询。

参考链接:https://zhuanlan.zhihu.com/p/47313236

sql的一部分:把表名去掉了

explain query plan
select codes,value,unit,starttime,endtime,quality from (
-- explain query plan
select ifNull(p.code,'00')||'-'||ifNull(pu.code,'00')||'-'||ifNull(eq.code,'00')||ifNull(e.code,'00')||'-'||ifNull(c.pclass,'00')||ifNull(c.code,'00')||'-'||ifNull(u.code,'00') codes, d.value value,d.unit unit,t.starttime starttime,t.endtime endtime,d.quality from d
left join p on d.processid = p.id
left join pu on d.processunitid = pu.id
left join e on d.equipmentid = e.id
left join eq on e.parentid = eq.id
left join c on d.collectItemid = c.UUID
left join t on d.timerangeid = t.id
left join u on d.usageid = u.id where 1=1
) RetureData order by starttime desc;

这是执行计划,Data表还是不能做到不全表扫描,但是会走索引的,一开始没加索引不走索引很慢,如果不全表扫描的话可能是要在where中添加使用索引里的条件

首先学到的知识是:走不走索引看的是where后的条件,select里如果有索引外的字段则需要回表,也就是Using Index,不回表显示的是USING COVERING INDEX,最后那句话是生成了一个临时表进行排序会变慢,我没有想到怎么加索引能去掉,试了好几个都不行,而且我加了starttime 的索引。

where中是and的话索引就与索引创建的顺序没关系,如果是or的话就应该需要多个索引,最佳作前缀原则,不然会导致索引失效。order by 的字段,先按where来过滤数据,在将数据排序,所以需要组合所有 where字段+order by字段

记录一次SQL优化,增加索引,随便写的当笔记了相关推荐

  1. 霜皮剥落紫龙鳞,下里巴人再谈数据库SQL优化,索引(一级/二级/聚簇/非聚簇)原理

    举凡后端面试,面试官不言数据库则已,言则必称SQL优化,说起SQL优化,网络上各种"指南"和"圣经"难以枚举,不一而足,仿佛SQL优化已然是妇孺皆知的理论常识, ...

  2. SQL优化中索引列使用函数之灵异事件

    SQL优化中索引列使用函数之灵异事件 在SQL优化内容中有一种说法说的是避免在索引列上使用函数.运算等操作,否则Oracle优化器将不使用索引而使用全表扫描,但是也有一些例外的情况,今天我们就来看看该 ...

  3. MySQL高级篇(SQL优化、索引优化、锁机制、主从复制)

    目录 0 存储引擎介绍 1 SQL性能分析 2 常见通用的JOIN查询 SQL执行加载顺序 七种JOIN写法 3 索引介绍 3.1 索引是什么 3.2 索引优劣势 3.3 索引分类和建索引命令语句 3 ...

  4. MySQL数据库:SQL优化与索引优化

    一.索引优化: 1.like语句的前导模糊查询不使用索引: select * from doc where title like '%XX':   --不能使用索引 select * from doc ...

  5. SQL优化:索引优化

    SQL索引 SQL索引在数据库优化中占有一个非常大的比例, 一个好的索引的设计,可以让你的效率提高几十甚至几百倍,在这里将带你一步步揭开他的神秘面纱. 1.1 什么是索引? SQL索引有两种,聚集索引 ...

  6. 记一次sql优化之索引的引用

    sql 优化时,一张200条数据的表,觉得数据量太少根本无须加索引,在一长段sql 优化无果后,发现这张表被频繁分组引用了四次,在外键加上索引后,成功优化... 所以数据量少的表,被频繁引用也需要加索 ...

  7. sql优化和索引常见的面试题(面试总结)

    1.什么是索引 索引指数据库的目录,比如:字典上面的字母目录 (适用于大数据量) 2.建立索引的优缺点 优点:查询速度快 缺点:增删改慢,因为数据库要同步去维护索引文件,所以速度慢 3.索引有哪些 普 ...

  8. SQL优化避免索引失效

    Oracle 索引的目标是避免全表扫描,提高查询效率,但有些时候却适得其反.例如一张表中有上百万条数据,对某个字段加了索引,但是查询时性能并没有什么提高,这可 能是 oracle 索引失效造成的.or ...

  9. SQL优化之索引优化

    索引优化 1. 分析SQL执行的性能 ​ 使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理SQL语句的.分析所编写的查询语句或是表结构的性能瓶颈. 具体语法: E ...

最新文章

  1. TCP: time wait bucket table overflow解决方法
  2. 内核模式下的注册表操作
  3. Luogu-P4768 (Kruskal重构树+最短路)
  4. 音乐播放类应用后台播放耗电评测报告
  5. 学习easyui疑问(三)
  6. Deep Learning(深度学习)网络资源
  7. {知道力} = {怎么做} + {为什么} 并且 {为什么} {怎么做}
  8. 版本控制工具比较-CVS,SVN,GIT
  9. iOS中控制器的实践和学习(3)-简易5图之A2
  10. 解决办法:对lzma_stream_decoder/lzma_code/lzma_end未定义的引用
  11. Django根据现有数据库建立model
  12. scala(三):流程控制-分支控制、嵌套循环、for、while、do…while循环、循环中断、多支循环
  13. 【ANSYS】ANSYS导入数组方法:MATLAB输出TXT文件导入ANSYS笔记
  14. php-fpm服务启动命令,PHP-fpm服务的启动和停止
  15. 国外LEAD网站采集你会了吗
  16. WIFI基础入门--802.11k--无线局域网络频谱测量
  17. 无惧浩瀚数据 超云XS5000集群存储为扩展而生
  18. AdEx、Ardor、Bluzelle项目评级更新 | TokenInsight
  19. Seneca :NodeJS 微服务框架入门指南
  20. python模拟银行存取款_python 模拟银行转账功能过程详解

热门文章

  1. public protect private继承
  2. jquery智能提示
  3. [Leedcode][JAVA][第50题][Pow(x, n)][快速幂][分治][转换类型]
  4. 九歌计算机在线作诗硬件原理,“九歌”作诗是如何炼成的?
  5. 1037C. Equalize
  6. android透明像素效率,android-非透明像素上的ImageView ColorFilter.夹
  7. mysql导出表_mysql导出表的3种方式
  8. ip地址异常判定python_python检测异常ip,并查询ip详细信息
  9. Package ‘*****‘ has no installation candidate
  10. 源码安装mysql5.1.51