记一次MySQL索引优化
两张表是主(CHECK_DRAWINGS)从(CHECK_DRAWINGS_IMG)关系。
CHECK_DRAWINGS,主表数据 3591条。
SELECT COUNT(*) FROM CHECK_DRAWINGS; -- 3591
CHECK_DRAWINGS_IMG,从表数据107203条,数据量并不大,从表通过check_drawings_id关联主表的主键id。
SELECT COUNT(*) FROM CHECK_DRAWINGS_IMG; -- 107203
现有一条SQ如下,根据exhibition_id查询出主表下最后上传的数据
SELECT
cdi.*,
cd.booth_id
FROM
check_drawings_img cdi,
check_drawings cd
WHERE cdi.check_drawings_id = cd.id
AND cd.exhibition_id = 'c480ffc7aed24789b025397c5b66ce88'
AND cdi.upload_time =
(SELECT
MAX(cdi2.upload_time)
FROM
check_drawings_img cdi2
WHERE cdi2.check_drawings_id = cd.id) ;
执行时间达到了14s左右,显然是无法接收的。
通过mysql explain 执行计划信息如下:
id
SELECT识别符,这是SELECT查询序列号。
select_type
simple 它表示简单的select,没有union和子查询
primary 最外面的select,在有子查询的语句中,最外面的select查询就是primary
dependent_subquery 看到 SQL 执行计划中 select_type 字段中出现“DEPENDENT SUBQUERY”时,需要特别注意了。
type
all : 即全表扫描
index : 按索引次序扫描,先读索引,再读实际的行,结果还是全表扫描,主要优点是避免了排序。因为索引是排好的。
range:以范围的形式扫描。
ref:非唯一索引访问(只有普通索引)
eq_ref:使用唯一索引查找(主键或唯一索引)
const:常量查询
解决方式一增加索引:
1、增加索引,我们对外检check_drawings_img.check_drawings_id增加索引如下:
ALTER TABLE check_drawings_img ADD INDEX check_drawings_id_idx (check_drawings_id) ;
再次执行,0.078s比之前快了约一百七十多倍:
看下执行计划:
记一次MySQL索引优化的更多相关文章
- Mysql 索引优化分析
MySQL索引优化分析 为什么你写的sql查询慢?为什么你建的索引常失效?通过本章内容,你将学会MySQL性能下降的原因,索引的简介,索引创建的原则,explain命令的使用,以及explain输出字 ...
- mySql索引优化分析
MySQL索引优化分析 为什么你写的sql查询慢?为什么你建的索引常失效?通过本章内容,你将学会MySQL性能下降的原因,索引的简介,索引创建的原则,explain命令的使用,以及explain输出字 ...
- mysql索引优化
mysql 索引优化 >mysql一次查询只能使用一个索引.如果要对多个字段使用索引,建立复合索引. >越小的数据类型通常更好:越小的数据类型通常在磁盘.内存和CPU缓存中都需要更少的空间 ...
- 知识点:Mysql 索引优化实战(3)
知识点:Mysql 索引原理完全手册(1) 知识点:Mysql 索引原理完全手册(2) 知识点:Mysql 索引优化实战(3) 知识点:Mysql 数据库索引优化实战(4) 索引原理知识回顾 索引的性 ...
- MySQL索引优化步骤总结
在项目使用mysql过程中,随着系统的运行,发现一些慢查询,在这里总结一下mysql索引优化步骤 1.开发过程优化 开发过程中对业务表中查询sql分析sql执行计划(尤其是业务流水表),主要是查看sq ...
- MySQL索引优化看这篇文章就够了!
阅读本文大概需要 5 分钟. 来源:cnblogs.com/songwenjie/p/9410009.html 本文主要讨论MySQL索引的部分知识.将会从MySQL索引基础.索引优化实战和数据库索引 ...
- mysql索引优化比普通查询速度快多少
mysql索引优化比普通查询速度快多少 一.总结 一句话总结:普通查询全表查询,速度较慢,索引优化的话拿空间换时间,一针见血,所以速度要快很多. 索引优化快很多 空间换时间 1.软件层面优化数据库查询 ...
- 【ZZ】MySQL 索引优化全攻略 | 菜鸟教程
MySQL 索引优化全攻略 http://www.runoob.com/w3cnote/mysql-index.html
- mysql数据库优化课程---17、mysql索引优化
mysql数据库优化课程---17.mysql索引优化 一.总结 一句话总结:一些字段可能会使索引失效,比如like,or等 1.check表监测的使用场景是什么? 视图 视图建立在两个表上, 删除了 ...
随机推荐
- python3.x Day3 文件编码
文件编码: 知识点不多,但及其重要,python2和python3处理机制还有不同点,需要注意. 首先: 编码.数据类型,完全不同的概念. 文件编码:可以遵循开发环境.可以自行设定. 变量值编码:py ...
- ubuntu wsl 子系统使用win10 系统ss代理步骤
wind10 安装ss客户端 配置server 具体不多说 安装 ubuntu 子系统 3.安装python pip apt install python-pip 4.升级pip pip instal ...
- 【转】Flex 布局
网页布局(layout)是CSS的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中 ...
- C# 解决EXCEL单元格合并,行高无法自适应问题
解决方法:根据单元格内容长度,设置单元格所在行的行高 public static float getExcelCellAutoHeight(string strtest, float fontCoun ...
- 实用型的DJANGO ORM
比较深入一点的内容,需要用时,用心看看. URL: https://www.sitepoint.com/doing-more-with-your-django-models/ https://www. ...
- JNI/NDK开发指南(三)——JNI数据类型及与Java数据类型的映射关系
转载请注明出处:http://blog.csdn.net/xyang81/article/details/42047899 当我们在调用一个Java native方法的时候.方法中的參数是怎样传递给C ...
- socket短连接、长连接
通常短连接是这样:连接->传输数据->关闭连接那什么是长连接?一般长连接相对短连接而言的,长连接在传输结束后不关闭连接,而不断的发送包保持连接等待处理下一个数据包. 一般长连接用于少数cl ...
- PHP第五课 自己主动类型转换与流程控制
学习概要: 1.了解自己主动类型转换的有哪些 2.了解主要的流程控制语句 3.实例:实现日历表格的写法 自己主动类型转换 1)整型转字符串 echo $num."abc"; 2)字 ...
- poj 1390 Blocks (记忆化搜索)
Blocks Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 4318 Accepted: 1745 Descriptio ...
- LeetCode 706. Design HashMap (设计哈希映射)
题目标签:HashMap 题目让我们设计一个 hashmap, 有put, get, remove 功能. 建立一个 int array, index 是key, 值是 value,具体看code. ...