本文共 2287 字,大约阅读时间需要 7 分钟。
Mysql 进阶学习Ⅰ
之前学习的数据库知识,主要是对表的增删改查(CRUD),并没有考虑对数据库做出优化,这章内容就是学习怎么优化数据库。
人写sql语句顺序
select * from join on where group by having order by limit机器执行sql语句顺序
from join on where group by having select order by limitsql解析图示
什么是索引?
Mysql官方定义:索引(Index)是帮助Mysql高效获取数据的数据结构。一般来说索引本身很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储在磁盘上,我们平常所说的索引,如果没有特别指明,都是指B树结构组织的索引。在磁盘上表现为后缀.MYI(mysql index的缩写)的文件。
一般建立索引的列不超过6-7个,太多会影响整个Mysql引擎性能。
使用EXPLAIN关键字可以模拟执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句,分析你的查询语句或是表结构的性能瓶颈。
1、EXPLAIN作用:
使用方法:
2、EXPLAIN性能指标参数详解
id:说明每张表的执行顺序,id越大执行越早,id越小执行越晚,id一样按照顺序从上往下执行。
select_type:查询类型,主要用于区别普通查询 ,联合查询,子查询等复杂查询。
SIMPLE,简单查询,查询中不包含子查询或者UNION
PRIMARY,主键查询
SUBQUERY,子查询
DERIVED,衍生表,在from列表中包含的子查询被标记为DERIVED,Mysql会递归执行这些子查询,把结果放到临时表里。
UNION,联合查询
UNION RESULT,
table:查询的是哪张表
type(重点):查询时使用的类型(使用的索引类型),性能从快到慢依次为,system>const>eq_ref>ref>range>index>ALL。一般来说,查询至少保证range级别,最好能到ref。
possible_keys:可能用到的索引
key:实际使用的索引
key_len:索引字段的最大可能长度。建库时varchar长度不要太长,影响效率。常见字段类型的key_len:
int:4 varchar:长度 * 3+2(var自身可变长度)+1(运行null值) char:长度 * 3+1(运行null值)ref:关联的索引字段是哪个
rows:根据表统计信息及索引选用情况,大致估算出找到所需的记录需要读取的行数
Extra:额外信息
3、索引失效
转载地址:http://fgupz.baihongyu.com/