记一次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表监测的使用场景是什么? 视图 视图建立在两个表上, 删除了 ...
随机推荐
- ubuntu环境搭建DNS服务器
1 安装bind9 apt install bind9 2 修改 named.conf.local,添加要解析的域名及对应的域名配置文件 zone "test.cn"{ type ...
- 第十二节:Web爬虫之MongoDB数据库安装与数据存储
MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功 ...
- FJoi2017 1月20日模拟赛 恐狼后卫(口糊动规)
Problem 1 恐狼后卫(wolf.cpp/c/pas) [题目描述] 著名卡牌游戏<石炉传说>中有一张随从牌:恐狼后卫.恐狼后卫的能力是使得相邻随从的攻击力提高. 现在有n张恐狼后卫 ...
- 【Codeforces 1019A】Elections
[链接] 我是链接,点我呀:) [题意] 每个人都有自己喜欢的队员 但是如果贿赂他们可以让他们更改自己喜欢的队员 问你最少要花多少钱贿赂队员才能让1号队员严格有最多的人喜欢? [题解] 除了1号之外, ...
- Codeforces Round #260 (Div. 2) D
D. A Lot of Games time limit per test 1 second memory limit per test 256 megabytes input standard in ...
- linux下安装并配置vim
1.安装:sudo apt-get install vim-gtk 安装好后vim,并按“tab”键,可以看到vim的存在,则安装好2.设置更加人性化:sudo vim /etc/vim/vimrc ...
- vim配置说明20170819
一.修改-/.vim/colors/guodesert.vim " Vim color file " Maintainer: Hans Fugal <hans@fugal.n ...
- ubuntu Change Language
慎用 所謂的語系(locale),其實包含語言及地區的設定,因為除了語言之外,國家與國家的日期表示方式.數字格式.貨幣符號.度量單位可能都不一樣,所以才會有了這個locale的發明,依照國家和語言給予 ...
- 一个经典的消费者和生产者的实现(linux )
#include <stdio.h> #include <pthread.h> #define BUFFER_SIZE 16 // 缓冲区数量 struct ...
- Solid Edge如何制作爆炸图
1 最方便的方式是自动爆炸 点击应用程式-"爆炸-涂彩-动画" 选择要爆炸的对象(默认是顶层组立件),要爆炸的距离(默认系统根据零件大小自动生成距离,你也可以手动设定距离)即可 ...