网站优化—mysql explain执行计划
explain执行计划
简介MySQL调优:
- 先发现问题(慢查询,profile)
- 对于使用索引和没有使用索引,了解到索引可以快速去查找数据
- 了解什么是索引(索引是排好序的快速查找的数据结构)
- 索引的管理(查看,创建,删除)
- 索引的本身的数据结构(B-TREE结构和聚簇结构)
- MySQL是如何去使用这些索引的(explain工具),需要去发现索引是否合理的被使用,防止索引滥用。
注意:索引对查询是有帮助的,但是对更新是没有好处的。索引要建立的合理。
MySQL调优的一个通用思路(面试题):通过上面的步骤就可以对MySQL进行调优,只要将上面的步骤重复不断执行,可以使用MySQL在最优的情况下工作。
profile定义:MySQL提供的一个可以分析SQL语句执行过程的工具,通过它大致可以了解到MySQL将如何执行用户传递过来的sql语句。
用法
使用的时候只要在对应的sql语句前面,加上关键字explain 或者同义词 desc
# desc select * from tableName where id = 1000000;
# explain select * from tableName where id = 1000000;
以上两条sql执行效果是等价的。
可以先简单对比 有索引 和 无索引 执行计划:
no_index无索引的情况下分析:


rows: 代表查询满足该sql语句的结果,可能需要查询行的数量。
id存在主键索引的情况下分析:

type:重点分析
- all 代表全表扫描,一般在不使用索引的情况下回出现该值

全表扫描:一行一行的逐行比较,然后返回满足条件的记录。
- const,代表使用了主键索引。 开发之中,尽量出现这个。常量查找

3. range代表范围操作,当执行的sql语句是一个范围查找的时候,也可以使用索引。

range含义解释:由于索引是排好序的结构。沿着这个有序的结构,再去截取一段有序的数据,是可以利用上索引的。
面试题:什么样的字段适合建立索引?(建立索引的时候有什么考虑?)
答:
- 在where条件后面作为查询的字段需要建立索引。
- 在(排序order 范围range 分组group)这些情况下也是可以使用索引的,所以在排序字段后面加上索引也是可以的。
注意:在where条件后也不是所有的字段都建立索引,因为索引本身也是有开销的。
- index代表使用了索引

当做记录统计的时候,可以直接使用索引返回记录的行数,就没必要去对磁盘文件的行数做统计。
- system,当表中的记录只有一行的时候,MySQL认为可以直接的返回记录信息,而不必要使用索引文件。一般出现在一行记录(自己建立的表)或者系统级别的表(mysql.user)一般MySQL在启动的时候,会将部分的系统级别的表优先载入到内存做一个缓存。

- null,可能出现,如果出现这个,也代表很好。基本不容易出现。

总结:null 》system》const》range》index》all
注意:尽量不要出现all
网站优化—mysql explain执行计划的更多相关文章
- MySQL性能分析, mysql explain执行计划详解
MySQL性能分析 MySQL性能分析及explain用法的知识是本文我们主要要介绍的内容,接下来就让我们通过一些实际的例子来介绍这一过程,希望能够对您有所帮助. 1.使用explain语句去查看分析 ...
- Mysql explain执行计划
EXPLAIN(小写explain)显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. EXPLAIN + sql语句可以查看mysql的执行 ...
- MySql——Explain执行计划详解
使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈. explain执行计划包含的信息 其中最重要的字段为:i ...
- [MySQL] explain执行计划解读
Explain语法 EXPLAIN SELECT …… 变体: 1. EXPLAIN EXTENDED SELECT …… 将执行计划“反编译”成SELECT语句,运行SHOW WARNINGS 可得 ...
- MySQL — 优化之explain执行计划详解(转)
EXPLAIN简介 EXPLAIN 命令是查看查询优化器如何决定执行查询的主要方法,使用EXPLAIN,只需要在查询中的SELECT关键字之前增加EXPLAIN这个词即可,MYSQL会在查询上设置一个 ...
- 【夯实Mysql基础】mysql explain执行计划详解
原文地址 1).id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询. 2).select_type列常见的有: A ...
- mysql explain执行计划详解
1).id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询. 2).select_type列常见的有: A:simp ...
- MYSQL EXPLAIN执行计划命令详解(支持更新中)
本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: 本篇是根据官网中的每个一点来翻译.举例.验证的:英语不好,所 ...
- 【转】mysql explain执行计划详解
1).id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询. 2).select_type列常见的有: A:simp ...
随机推荐
- DFS:Prime Ring Problem(素数环)
解体心得: 1.一个回溯法,可以参考八皇后问题. 2.题目要求按照字典序输出,其实在按照回溯法得到的答案是很正常的字典序.不用去特意排序. 3.输出有个坑,就是在输出一串的最后不能有空格,不然要PE, ...
- 消息框模块-tkinter
import tkinter.messagebox # 这个是消息框,对话框的关键from tkinter import * error_fp_list = [[973.45, '河北卡卡汽车贸易有限 ...
- 当我们在讨论CQRS时,我们在讨论些神马?
当我写下这个标题的时候,我就有些后悔了,题目有点大,不太好控制.但我还是打算尝试一下,通过这篇内容来说清楚CQRS模式,以及和这个模式关联的其它东西.希望我能说得清楚,你能看得明白,如果觉得不错,右下 ...
- 手把手教你启用RemoteFX以及Hyper-V GPU卸载
[TechTarget中国原创] 微软的RemoteFX特性可以帮助改善虚拟机图形密集型应用工作负载的性能. 服务器虚拟化已经成熟到大多数工作负载都能够在虚拟机内运行的程度.毫无疑问,与其他工作负载相 ...
- 可实现一键分享到多个平台(微信,微博,qq空间,人人等)
友推是一款是面向移动应用的SDK分享组件,提供给开发者集成使用.通过友推,开发者可以轻松集成社会化分享功能,同时创建及管理推荐好友使用您应用的推荐奖励活动,用户推荐好友安装使用您的应用即可获得推荐奖励 ...
- DirectShow简单入门程序
1.首先确认已安装过相关工具及配置环境,然后打开vs2010,新建一对话框应用程序 取名为Player_test1,然后打开菜单->项目->属性-> 添加strmmiids.lib库 ...
- junit4 assert类中的assert方法总结
junit中的assert方法全部放在Assert类中,总结一下junit类中assert方法的分类. 1.assertTrue/False([String message,]boolean cond ...
- 菜鸟之路——Linux基础::计算机网络基础,Linux常用系统命令,Linux用户与组权限
最近又重新安排了一下我的计划.准备跟着老男孩的教程继续学习,感觉这一套教程讲的很全面,很详细.比我上一套机器学习好的多了. 他的第一阶段是Python基础,第二阶段是高等数学基础,主要将机器学习和深度 ...
- 给出 中序&后序 序列 建树;给出 先序&中序 序列 建树
已知 中序&后序 建立二叉树: SDUT 1489 Description 已知一棵二叉树的中序遍历和后序遍历,求二叉树的先序遍历 Input 输入数据有多组,第一行是一个整数t (t& ...
- php获取客户端mac地址
exec('/sbin/arp -a 2>&1', $array, $return_val);dump($array);$mac = '';foreach($array as $valu ...