Mysql索引优化2
理想的索引
- 查询频繁
- 区分度高
- 长度小
- 尽量能覆盖常用查询字段
索引与排序
- 对于覆盖索引,直接在索引上查询时,就是有顺序的,using index
- 在innodb引擎中,沿着索引字段排序自然是有序的
- 在myisam引擎中,沿着索引字段排序,但取出来的字段有非索引字段,并不是索引->回行,索引->回行,而是一次性取出所有数据,再进行排序,explain这样的sql语句时,extra中就会出现using filesort
- 要想办法避免filesort,尽可能的利用索引来排序
- where a > 3 order by b 假设a列和b列都是独立索引,这样的sql explain中也会有using filesort, 因为a,b都是独立索引,在查询中只能用到a对应的索引,order by b时无法使用索引
Explain解释
- select type字段
- simple (不含子查询)
- primary(含有子查询或派生查询)
- subquery (非from子查询)
- derived (from型子查询)
- union
- union result
- type字段 分析查询的关键字段
- all < index < range < ref < eq_ref < (const, system, null)
- all 全表扫描
- index 扫描索引树上全部的索引节点
- range 根据索引做范围的扫描
- ref 通过索引列,直接引用到某些数据行
- eq_ref 通过索引列,直接引用一行数据,常用于连接中
- 一般按照主键查询时,易出现const, system 当查询不经过表时会出现null
- table字段
- 真实的表名
- 临时表 如as tmp
- derived 如from型子查询
- null 不使用表
- ref字段
- 连接查询时,表之间字段的引用关系
- possible key字段
- 可能使用的索引
- key 字段
- 最终使用的索引
- key len 字段
- 实际使用索引的长度
- rows 字段
- 估计要扫描多少行
- extra 字段
- using index 用到了索引覆盖
- using where 光靠索引定位不了,还得where判断一下
- using temporary 用到了临时表,效果已经非常不好了
- using filesort 文件排序,可能在磁盘,也可能在内存中
Mysql索引优化2的更多相关文章
- mysql索引优化
mysql 索引优化 >mysql一次查询只能使用一个索引.如果要对多个字段使用索引,建立复合索引. >越小的数据类型通常更好:越小的数据类型通常在磁盘.内存和CPU缓存中都需要更少的空间 ...
- Mysql 索引优化分析
MySQL索引优化分析 为什么你写的sql查询慢?为什么你建的索引常失效?通过本章内容,你将学会MySQL性能下降的原因,索引的简介,索引创建的原则,explain命令的使用,以及explain输出字 ...
- 知识点: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.软件层面优化数据库查询 ...
- mySql索引优化分析
MySQL索引优化分析 为什么你写的sql查询慢?为什么你建的索引常失效?通过本章内容,你将学会MySQL性能下降的原因,索引的简介,索引创建的原则,explain命令的使用,以及explain输出字 ...
- 【ZZ】MySQL 索引优化全攻略 | 菜鸟教程
MySQL 索引优化全攻略 http://www.runoob.com/w3cnote/mysql-index.html
- mysql数据库优化课程---17、mysql索引优化
mysql数据库优化课程---17.mysql索引优化 一.总结 一句话总结:一些字段可能会使索引失效,比如like,or等 1.check表监测的使用场景是什么? 视图 视图建立在两个表上, 删除了 ...
- MYSQL索引优化思维导图
有关索引的优化.MYSQL索引优化 文章来源:刘俊涛的博客 地址:http://www.cnblogs.com/lovebing
随机推荐
- hdu 1003 Max Sum(基础dp)
Max Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- GeoServer基础教程(四):空间数据互操作的接口规范WMS、WFS和WCS
转载:https://ethanblog.com/tech/all-about-wms-wfs-and-wcs.html 前面几节介绍了GeoServer基础教程的一些基本操作,相信大家对GeoSer ...
- 关于pyhton中的__xxx__格式的方法与变量的理解
python中类似__xx__的方法和变量是python系统内定义的方法和变量,都是具有特殊意义的基础变量和方法,一般不要擅自使用,除非知道自己在干什么. 具体查看python内置模块builtins ...
- Mybatis学习--Java API
学习笔记,选自Mybatis官方中文文档:http://www.mybatis.org/mybatis-3/zh/java-api.html#directoryStructure 既然你已经知道如何配 ...
- python之路-进程
博客园 首页 新随笔 联系 管理 订阅 随笔- 31 文章- 72 评论- 115 python之路——进程 阅读目录 理论知识 操作系统背景知识 什么是进程 进程调度 进程的并发与并行 ...
- html之canvas
canvas代码片段: <canvas id="testCanvas" width="400" height="150" style= ...
- 洛谷 4178 Tree——点分治
题目:https://www.luogu.org/problemnew/show/P4178 点分治.如果把每次的 dis 和 K-dis 都离散化,用树状数组找,是O(n*logn*logn),会T ...
- mysql root密码忘记重置
1.修改/etc/my.cnf文件 找到mysqld选项,增加子项skip-grant-tables 2.重新启动mysql服务 service mysqld restart 3.进入mysql 在s ...
- Poj_1045
这道题难点在于基本物理知识和数学的结合. 得出公式后再code,那就是小菜一碟了. import java.util.Scanner; import java.lang.Math; public cl ...
- HDOJ1025(最长上升子序列)
Constructing Roads In JGShining's Kingdom Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65 ...