本篇内容介绍了“MySQL的性能优化方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
<节> <节> <节> <节> <节> <强>解释有什么用? 强> ,,,节> 节> 节> 节> 节> MySQL提供了一个解释命令,它可以对选择语句进行分析,并输出选择执行的详细信息,以供开发人员针对性优化。
解释命令用法十分简单,在选择语句前加上解释就可以了,例如:
为了演示解释,我们先创建一张表xttblog。
id:选择查询的标识符。每个选择都会自动分配一个唯一的标识符。对于每个字段的解释如下:
- <李>
select_type:选择查询的类型。李李
> <>表:查询的是哪个表
李> <李>分区:匹配的分区
李> <李>类型:加入类型
李> <李>possible_keys:此次查询中可能选用的索引
李> <李>键:此次查询中确切使用到的索引。李李
> <>裁判:哪个字段或常数与关键一起被使用
李> <李>行:显示此查询一共扫描了多少行。这个是一个估计值。李李
> <>过滤:表示此查询条件所过滤的数据的百分比
李> <李>额外:额外的信息
李>每个字段的含义我们可能都了解了,但是每个字段都对应好几个值。那么每个值又代表什么意思呢?下面我们针对每个关键字代表什么意思,再来单独解释一下!
<节> <节> <节> <节> <节> <强> select_type 强> ,,,节> 节> 节> 节> 节> select_type表示了查询的类型,它的常用取值有:
- <李>
简单:表示此查询不包含工会查询或子查询
李> <李>主:表示此查询是最外层的查询
李> <李>联盟:表示此查询是联盟的第二或随后的查询
李> <李>依赖工会:工会中的第二个或后面的查询语句,取决于外面的查询
李> <李>联盟结果:联盟的结果
李> <李>子查询:子查询中的第一个选择
李> <李>相关子查询:子查询中的第一个选择、取决于外面的查询。即子查询依赖于外层查询的结果
李>最常见的查询类别应该是简单的了,比如当我们的查询没有子查询,也没有工会查询时,那么通常就是简单的类型。
<节> <节> <节> <节> <节> 强> <强>表 ,,,节> 节> 节> 节> 节>表,表示查询涉及的表或衍生表.xttblog代表的就是xttblog表。你们;union1, 2比;代表的就是,第一条和第二条查询出来的结果的合集。
分区:NULL。代表的是是否使用了分区,空表明没有分区。
类型字段比较重要,它提供了判断查询是否高效的重要依据依据。通过类型字段,我们判断此次查询是全表扫描还是索引扫描等。
类型常用的取值有:
- <李>
系统:表中只有一条数据。这个类型是特殊的常量类型
李> <李>const:针对主键或唯一索引的等值查询扫描,最多只返回一行数据.const查询速度非常快,因为它仅仅读取一次即可
李> <李>eq_ref:此类型通常出现在多表的加入查询,表示对于前表的每一个结果,都只能匹配到后表的一行结果。并且查询的比较操作通常是=⒉檠式细?/p> 李> <李>
裁判:此类型通常出现在多表的加入查询,针对于非唯一或非主键索引,或者是使用了最左前缀规则索引的查询
李> <李>范围:表示使用索引范围查询,通过索引字段范围获取表中部分数据记录。这个类型通常出现在=& lt;,祝辞,=& lt;, & lt;=零,& lt;=祝辞,之间,在()操作中。当类型是范围时,那么解释输出的ref字段为空,并且key_len字段是此次查询中使用到的索引的最长的那个