简单MySQL教程三

简单MySQL教程三,第1张

概述介绍《简单MySQL教程三》开发教程,希望对您有用。

《简单MysqL教程三》要点:
本文介绍了简单MysqL教程三,希望对您有用。如果有疑问,可以联系我们。

一、性能阐发

1、MysqL query Optimizer

1 )、MysqL中有专门负责优化SELECT语句的优化器模块,主要功能:通过计算分析系统中收集到的统计信息,为客户端哀求的query提供他认为最优的执行计划(它认为最优的数据检索方式,但不见得是DBA认为是最优的,这部分最耗费时间)

2) 当客户端向MysqL 哀求一条query,命令解析器模块完成哀求分类,区别出是 SELECT 并转发给MysqL query Optimizer时,MysqL query Optimizer 首先会对整条query进行优化,处理掉一些常量表达式的预算,直接换算成常量值.并对 query 中的查询条件进行简化和转换,如去掉一些无用或显而易见的条件、结构调整等.然后分析 query 中的 Hint 信息(如果有),看显示Hint信息是否可以完全确定该query 的执行计划.如果没有 Hint 或Hint 信息还不足以完全确定执行计划,则会读取所涉及对象的统计信息,根据 query 进行写相应的计算分析,然后再得出最后的执行计划.

2、MysqL常见瓶颈

cpu:cpu在饱和的时候一般产生在数据装入内存或从磁盘上读取数据时候

IO:磁盘I/O瓶颈产生在装入数据远大于内存容量的时候

二、explain症结字

1、explain是什么

使用EXPLAIN关键字可以模拟优化器执行SQL语句,从而知道MysqL是如何处理你的SQL语句.分析你的查询语句或是表布局的性能瓶颈.

2、explain做什么

可以查看以下内容:

表的读取次序

数据读取 *** 作的 *** 作类型

哪些索引可以被使用

哪些索引被现实使用

表之间的引用

每张表有若干行被优化器查询

3、explain怎样用

执行Explain + SQL语句可以查看一下内容

4、各字段解释

ID

select查询的序列号,包括一组数字,表示查询中执行select子句或 *** 作表的顺序,数字相同的从上到下依次执行,不同的数字大的优先执行.

select_type

查询的类型,主要用于区别普通查询,联合查询,子查询等繁杂查询.主要有以下6种

SIMPLE:简单的 select 查询,查询中不包括子查询或者UNION

PRIMARY:查询中若包括任何复杂的子部分,最外层查询则被标记为

SUBquery:在SELECT或WHERE列表中包括了子查询

DERIVED:在FROM列表中包括的子查询被标记为DERIVED(衍生)MysqL会递归执行这些子查询,把结果放在临时表里.

UNION:若第二个SELECT出现在UNION之后,则被标记为UNION;若UNION包括在FROM子句的子查询中,外层SELECT将被标记为:DERIVED

UNION RESulT:从UNION表获取成果的SELECT

table

显示这一行数据来自哪一张表

type

表示拜访类型,从最好到最坏依次为system const eq_ref ref fulltext ref_or_null index_merge unique_subquery index_subquery range index ALL

一般来说至少要到达range级别.

possible_keys

显示可能应用在这张表中的索引,一个或多个.查询涉及到的字段上若存在索引,则该索引将被列出,但不必定被查询实际使用

key

实际使用的索引.如果为NulL,则没有使用索引.查询中若使用了笼罩索引,则该索引和查询的select字段重叠

key_len

表现索引中使用的字节数,可通过该列计算查询中使用的索引的长度.在不损失精确性的情况下,长度越短越好

key_len显示的值为索引字段的最年夜可能长度,并非实际使用长度,即key_len是根据表定义计算而得,不是通过表内检索出的

ref

显示索引的哪一列被使用了,假如可能的话,是一个常数.哪些列或常量被用于查找索引列上的值

rows

根据表统计信息及索引选用情况,大致估算出找到所需的记录所必要读取的行数

Extra

包括以下内容:

5、举例阐发

第一行(执行顺序4):ID列为1,表示是union里的第一个select,select_type列的primary表 示该查询为外层查询,table列被标志为derived3,表示查询结果来自一个衍生表,其中derived3中3代表该查询衍生自第三个select查询,即ID为3的select.【select d1.name......】

第二行(执行顺序2):ID为3,是整个查询中第三个select的一部分.因查询包括在from中,所以为derived.【select ID,name from t1 where other_column=''】

第三行(执行次序3):select列表中的子查询select_type为subquery,为整个查询中的第二个select.【select ID from t3】

第四行(执行顺序1):select_type为union,阐明第四个select是union里的第二个select,最先执行【select name,ID from t2】

第五行(执行顺序5):代表从union的临时表中读取行的阶段,table列的union1,4表现用第一个和第四个select的结果进行union *** 作.【两个结果union *** 作】

教程四会出怎样样优化索引和避免索引失效

《简单MysqL教程三》是否对您有启发,欢迎查看更多与《简单MysqL教程三》相关教程,学精学透。内存溢出PHP学院为您提供精彩教程。

总结

以上是内存溢出为你收集整理的简单MySQL教程三全部内容,希望文章能够帮你解决简单MySQL教程三所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/1158051.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-01
下一篇2022-06-01

发表评论

登录后才能评论

评论列表(0条)

    保存