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
随机推荐
- C++(八)— 死锁原因及解决方法
1.死锁原因 死锁问题被认为是线程/进程间切换消耗系统性能的一种极端情况.在死锁时,线程/进程间相互等待资源,而又不释放自身的资源,导致无穷无尽的等待,其结果是任务永远无法执行完成. 打个比方,假设有 ...
- flex与js交互浅析
1.flex调用js方法 调用方法例如:ExternalInterface.call("UploadComplete",oldName,uidName,_dir+"/&q ...
- Eclipse_常用技巧_01_自动添加类注释和方法注释
一.步骤 路径A=windows-->preference-->Java-->Code Style-->Code Templates-->Comments 自动添加注释一 ...
- SQL多列查询最大值
直接从某一列查询出最大值或最小值很容易,通过group by字句对合适的列进行聚合操作,再使用max()/min()聚合函数就可以求出. 样本数据如下: key_id x y z A 1 2 3 B ...
- 树套树Day2
滚回来更新,,, 在Day1我们学了最基本的线段树套平衡树 Day2开始我们要学习一些黑科技 (所以很大概率会出现Day3 w 1.线段树上的黑科技 这一段我们分几项来讲 1.权值线段树 权值线段树以 ...
- MySQL_西安11月销售昨日未上架的产品_20161212
#C034西安11月销售昨日未上架的产品 SELECT 城市,a.订单日期,a.客户数,a.订单数,b.产品数,a.金额,c.销售确认额,c.毛利额,c.毛利率 FROM ( SELECT 城市,订 ...
- Poj 2662,2909 Goldbach's Conjecture (素数判定)
一.Description In 1742, Christian Goldbach, a German amateur mathematician, sent a letter to Leonhard ...
- 【转】 Pro Android学习笔记(五二):ActionBar(5):list模式
可以在action bar中加入spinner的下来菜单,有关spinner,可以参考Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner. list的样式和 ...
- MyBatis动态传入表名,字段名参数的解决办法---statementType用法
statementType="STATEMENT" 要实现动态传入表名.列名,需要做如下修改 添加属性statementType="STATEMENT" 同时s ...
- spring容器扩展功能之一:spring加载ApplicationContext.xml的四种方式
容器加载Bean的常见两个类ApplicationContext和BeanFactory, 一.首先,看看spring中加载配置在xml中的Bean对象到容器 spring 中加载xml配置文件的方式 ...