mysql中解释的作用

  介绍

本篇文章给大家分享的是有关mysql中解释的作用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

<强> mysql解释的作用是:

在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到解释这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过解释命令来查看,所以我们深入了解mysql的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行SQL语句时哪种策略预计会被优化器采用。

mysql>解释从tb_user select *;   + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - +   | | id select_type表| | |型possible_keys关键| | key_len | ref额外| | |行   + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - +   | 1 |简单| tb_user零| | |所有空零零零| | 1 | | |   + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - + +

<强>(一)id列:

(1)id相同执行顺序由上到下   mysql>解释   →SELECT * FROM tb_order tb1   →离开加入tb_product tb2> 1,使用filesort(文件排序):mysql无法按照表内既定的索引顺序进行读取。   mysql>解释从tb_order选择order_number order_money秩序;   + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - +   | | id select_type表| | |型possible_keys关键| | key_len | ref额外| | |行   + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - +   | 1 |简单| tb_order |所有零零零零| | | | | 1 |使用filesort |   + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - +   1行集(0.00秒)   说明:order_number是表内的一个唯一索引列,但是,没有使用该索引列排序,所以mysql使用不得不另起一列进行排序。   2,使用临时:Mysql使用了临时表保存中间结果,常见于排序order by和分组查询集团。   mysql>解释选择order_number order_money tb_order集团;   + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   | | id select_type表| | |型possible_keys关键| | key_len | ref额外| | |行   + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   | 1 |简单| tb_order |所有零零零零| | | | | 1 |使用临时的;使用filesort |   + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   1行集(0.00秒)   3,使用索引表示相应的选择操作使用了覆盖索引,避免访问了表的数据行,效率不错。   如果同时出现使用,表明索引被用来执行索引键值的查找。   如果没有同时出现使用在表明索引用来读取数据而非执行查找动作。   mysql>解释选择order_number order_number tb_order集团;   + - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - +   | | id select_type表| | |型possible_keys关键| | key_len | ref额外| | |行   + - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - +   | 1 |简单| tb_order | |索引index_order_number | index_order_number零| | 99 | | 1 |使用索引   + - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - +   1行集(0.00秒)   4,使用查找   5,使用加入缓冲:表示当前sql使用了连接缓存。   6,不可能:字句总是假的,mysql无法获取数据行。   7,选择表优化掉:   8截然不同:

mysql中解释的作用