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
随机推荐
- CSS重置 reset.css
1. [文件] reset.css ~/*------------------------------------------* site:ifnoif.net* Style author:ifnoi ...
- vue2.0+wechat
首先遇到的问题就是使用npm下载JSSDK 下载正确的JSSDK 正确的名称是:'weixin-js-sdk' 其实有好几个相似的名称都可以下载,只有这一个能用 支付问题使用Vue的路由跳转到支付页面 ...
- c#子线程执行完怎么通知主线程
定义一个委托实现回调函数 public delegate void CallBackDelegate(string message); 程序开始的时候 //把回调的方法给委托变量 CallBackDe ...
- appium-环境搭建(一)
adb命令 adb的全称为Android Debug Bridge,就是起到调试桥的作用.借助adb工具,我们可以管理设备或者手机模拟器的状态.还可以进行很多手机操作,如安装软件\系统升级\运行she ...
- Swift中数组和字典都是值类型
在 Swift 中,所有的基本类型:整数(Integer).浮点数(floating-point).布尔值(Boolean).字符串(string).数组(array)和字典(dictionary), ...
- bzoj 4530 大融合 —— LCT维护子树信息
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4530 用LCT维护子树 size,就是实边和虚边分开维护: 看博客:https://blog ...
- 编译Python出现Tab,空格的问题
我们编译python代码时, 经常出现各种因为tab和空格的问题, 例如: IndentationError: unindent does not match any outer indentatio ...
- Apache Flume 1.6.0 发布,日志服务器
Apache Flume 1.6.0 发布,此版本现已提供下载: http://flume.apache.org/download.html 更新日志和文档: http://flume.apache. ...
- 影响Scala语言设计的因素列表
Scala语言设计概述 Scala的设计受许多编程语言和研究思想的影响.事实上,仅很少的Scala的特点是全新的:大多数都已经被以另外的形式用在其他语言中了.Scala的革新主要来源于它是如何构造并放 ...
- Python知识点: __import__
用法:libvirt = __import__('libvirt') help(__import__) __import__(...) __import__(name, globals={}, ...