尚硅谷Mysql高级day4(p24-28)

今天是2020-12-30。
一。explain-type
1.显示查询使用了何种类型,从最好到最差依次是:system,const,eq_ref,ref,range,index,all
2.需要保证查询至少到range级别,最好能到ref
3.system:表只有一行记录,等于是系统表,是const类型的特例,平时不会出现
4.const:表示通过一次索引就找到了数据,用于比较主键或者唯一索引。比如我们将主键置于where子句中,mysql就能将查询转为一个常量
5.eq_ref:唯一性索引扫描,对于每个索引键,表中只有一行记录与之匹配,常用于主键索引或者唯一索引的扫描
6.ref:非唯一性索引扫描,会返回匹配某个值的所有行。
7.range:只检索指定范围内的行,使用一个索引来选择行,会在key列显示使用了哪个索引。range一般会出现在使用了between、>、<的where子句时,会比全表扫描要好,因为range只需要开始于索引的某一点然后结束于另一点,不用去扫描全部索引。
8.index:全索引扫描,只扫描全部索引,而不是去扫描全部数据。
二。explain-possible_key
显示可能应用在这张表上的一个或多个索引。查询涉及到的字段上若存在索引,则会被列出,但不一定会被使用。
三。explain-key
实际使用到的索引,如果没有使用索引,则为null。查询中若使用到了覆盖索引,则该索引仅会出现在key列表中。
覆盖索引的意思是:查询时需要返回的字段与使用到的索引包含的字段一致,即为覆盖索引,简单来说就是通过使用索引就能得到全部数据,不需要根据索引查出的数据再回表查另外的数据。查询中若使用到了主键索引就只用扫描一次B+树即可得到数据。如果查询使用了非主键索引,那么就要先通过非主键索引定位到它对应的主键索引的值,再根据主键索引的值取定位整行记录,这样就要扫描两次B+树,即我们通常说的回表查询了一次。所以说如果我们在查询时如果不能使用非主键索引查出全部数据,那么就要再根据它对应的主键索引的值回表查询需要的数据
四。explain-key_len
表示查询中使用到的索引的字节数,查询中越多的字段使用到了索引,精度越高,这个值也会越大
五。explain-ref
显示索引的的哪一列被使用了,可能是一个常数–以const表示,表示哪些列和常数被用于查找索引列上的值。如果是某一列被用到,就是以数据库名.表名.列名显示这一列被使用。
六。explain-rows
根据表的信息和查询时使用索引的情况,估计出查找到数据所需读取的记录行数

猜你喜欢

转载自blog.csdn.net/qq_44727091/article/details/111998727