美文网首页
1.explian检验sql是否走索引

1.explian检验sql是否走索引

作者: 指尖架构141319 | 来源:发表于2020-01-09 10:15 被阅读0次
image.png

1.概述

explain 可以查询慢sql是否走索引,包括类型,是否全表搜索等信息共10列(id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra)

2.各列含义

  • select_type:示查询中每个select子句的类型
    SIMPLE:简单select语句,不实用union或子查询等
    PRIMARY:查询中若包含任何复杂的子部分,最外层的select被标记为PRIMARY
    UNION:UNION中的第二个或后面的SELECT语句
    UNION RESULT:UNION的结果
    SUBQUERY:子查询中的第一个SELECT
  • table:查询的表名
  • type:联接类型,下面给出从最佳到最坏
    system:表仅有一行(=系统表)。这是const联接类型的一个特例。
    const:表最多有一个匹配行,它将在查询开始时被读取。
    eq_ref:对于每个来自于前面的表的行组合,从该表中读取一行。
    ref:对于每个来自于前面的表的行组合,所有有匹配索引值的行将从这张表中读取。
    ref_or_null:该联接类型如同ref,但是添加了MySQL可以专门搜索包含NULL值的行。
    index_merge:该联接类型表示使用了索引合并优化方法。
    unique_subquery:该类型替换了下面形式的IN子查询的ref: value IN (SELECT primary_key FROM single_table WHERE some_expr) unique_subquery是一个索引查找函数,可以完全替换子查询,效率更高。
    index_subquery:该联接类型类似于unique_subquery。可以替换IN子查询,但只适合下列形式的子查询中的非唯一索引: value IN (SELECT key_column FROM single_table WHERE some_expr)。
    range:只检索给定范围的行,使用一个索引来选择行。
    index:该联接类型与ALL相同,除了只有索引树被扫描。这通常比ALL快,因为索引文件通常比数据文件小。
    ALL:对于每个来自于先前的表的行组合,进行完整的表扫描。
  • possible_keys:能使用哪个索引在表中找到记录,查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询使用
  • key:显示MySQL在查询中实际使用的索引,若没有使用索引,显示为NULL
  • key_len:显示的值为索引字段的最大可能长度,并非实际使用长度
  • ref:连接匹配条件,即哪些列或常量被用于查找索引列上的值
  • rows:显示MySQL认为它执行查询时必须检查的行数。

相关文章

  • 1.explian检验sql是否走索引

    1.概述 explain 可以查询慢sql是否走索引,包括类型,是否全表搜索等信息共10列(id、select_t...

  • MySQL正确使用索引

    需要解决的问题 知道sql为什么会走索引? 为什么有些sql不走索引? sql会走那些索引,为什么会这么走? In...

  • Mysql慢查询如何优化 --- 2021-09-14

    检查是否走了索引,如果没有则优化sql,使用索引; 检查所使用的的索引,是否是最有索引; 检查所查字段是否都是必须...

  • sql是否走索引

    使用 Explain 命令来查看语句的执行计划 例:Explain select * from table 除过s...

  • SQL Server数据库高级进阶之索引优化实战演练

    一、SQL Server索引优化本质 二、SQL Server索引存储机制 三、SQL Server索引类型分类 ...

  • 记录一次sql优化遇到的坑

    两个表join查询,却不走连接条件的索引。当索引无问题,sql也无问题时,就可以去看看这两个表连接字段的字符集是否...

  • MySQL explain命令实操

    explain作用 explain命令是用来查看一个sql语句的执行计划,可以看出这个sql语句是否使用到索引,是...

  • 索引

    索引的概念及创建 学习一下索引。索引应该是Oracle的初级内容中比较重要的一部分。因为是否创建索引,对SQL的查...

  • MySQL性能优化笔记

    通过explain 查出执行情况,是否使用索引 查询sql语句耗时: set profiling = 1; /SQ...

  • mysql索引篇之explain命令介绍

    mysql中的explain命令可以用来查看sql语句是否使用了索引,用了什么索引,有没有做全表扫描。可以帮助我们...

网友评论

      本文标题:1.explian检验sql是否走索引

      本文链接:https://www.haomeiwen.com/subject/wftyactx.html