首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

技术分享 | EXPLAIN 执行计划详解(2)--Extra

---- Extra Extra 是 EXPLAIN 输出中另外一个很重要的列,该列显示 MySQL 在查询过程中的一些详细信息。 ?...Using index 使用索引覆盖的情况下,执行计划extra 会显示为 "Using index": 查询的字段都包含在使用的索引中; where 子句使用的字段也都包含在使用的索引中。...: Using where; Using index Using index condition 查询数据时如果使用 index condition down 索引条件下推就会在执行计划extra...条件下推给了存储引擎层,提前进行筛选,这样返回给 MySQL 服务层的数据就变少了; 剩下的不能用到索引的 where 条件还是在 MySQL 服务层生效。...当出现这的情况,执行计划extra 字段就会出现 "Using where",它可以和 "Using index" 一起出现,也可以和 "Using index condition" 一起出现。

1.5K10

技术分享 | EXPLAIN 执行计划详解(2)--Extra

---- Extra Extra 是 EXPLAIN 输出中另外一个很重要的列,该列显示 MySQL 在查询过程中的一些详细信息。 ?...Using index 使用索引覆盖的情况下,执行计划extra 会显示为 "Using index": 查询的字段都包含在使用的索引中; where 子句使用的字段也都包含在使用的索引中。...: Using where; Using index Using index condition 查询数据时如果使用 index condition down 索引条件下推就会在执行计划extra...条件下推给了存储引擎层,提前进行筛选,这样返回给 MySQL 服务层的数据就变少了; 剩下的不能用到索引的 where 条件还是在 MySQL 服务层生效。...当出现这的情况,执行计划extra 字段就会出现 "Using where",它可以和 "Using index" 一起出现,也可以和 "Using index condition" 一起出现。

1.1K10

数栈技术分享:解读MySQL执行计划的type列和extra

一、解读type 执行计划的type表示访问数据类型,有很多种访问类型。...4、ref 与上面相反,如果执行计划的某一步的type是ref的话,表示这一步的关联列是非唯一索引。...例如执行下列语句: mysql> explain select * from lock_test where id=3 or num=4; ​ id为主键,num列上建有普通索引,语句执行时,会通过两个单列索引来处理...过滤条件发生在server层而不是存储引擎层; 如果执行计划中显示走了索引,但是rows值很高,extra显示为using where,那么执行效果就不会很好。...4、using sort_union(indexs) 比如当执行下面语句: ​ Sname和sphone列上都有索引,这时执行计划extra项就会显示using sort_union(i_sname

2.6K00

Mysql执行计划

avgscoreFROMscWHEREsc.score = 2) tmp ON tmp.Sid = student.SId用执行计划分析...sqlAEXPLAIN sqlA分析执行计划的返回结果idid 是 select 的执行顺序,id 越大优先级越高,越先被执行,id 相同时下面的先执行.select_typeselect_type说明...NULLkey_len表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度ref显示该表的索引字段关联了哪张表的哪个字段rows读取的行数,数值越小越好filtered返回结果的行数占读取行数的百分比,值越大越好extra...Manual :: 8.8.1 Optimizing Queries with EXPLAINMysql经典练习题50题_original_recipe的博客-CSDN博客_mysql练习题MySQL...执行计划详解 - 云+社区 - 腾讯云 (tencent.com)MySQL索引创建及使用_程序人生-CSDN博客_mysql建立索引

1.3K10

Mysql执行计划

FROM sc WHERE sc.score = 2 ) tmp ON tmp.Sid = student.SId 用执行计划分析...sqlA EXPLAIN sqlA 分析执行计划的返回结果 id id 是 select 的执行顺序,id 越大优先级越高,越先被执行,id 相同时下面的先执行. select_type select_type...表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度 ref 显示该表的索引字段关联了哪张表的哪个字段 rows 读取的行数,数值越小越好 filtered 返回结果的行数占读取行数的百分比,值越大越好 extra...Manual :: 8.8.1 Optimizing Queries with EXPLAIN Mysql 经典练习题 50 题_original_recipe 的博客-CSDN 博客_mysql...练习题 MySQL 执行计划详解 - 云 + 社区 - 腾讯云 (tencent.com) MySQL 索引创建及使用_程序人生-CSDN 博客_mysql 建立索引

8810

MySQL执行计划

执行计划 4. 执行计划包含的信息: 如上图,执行计划查出来后包含如下信息: id:select 查询的序列号,包含一组数字,表示查询中执行select 子句或表的读取顺序。...fltered:按表条件过滤的行百分比 extra:包含了一些十分重要但又不适合在其他列显示的信息。...包含以下内容: extra 含义 using filesort 说明MySQL会对数据使用一个外部的索引排序,而不是用表内的索引顺序进行读取,这种文件内排序是很费时的。...col2_col3,执行select col1 from t1 where col1 = 'a' order by col3,我们建的复合索引是三个列,而这条sql中只使用了两个,col2没了,看它的执行计划就会发现...using temporary MySQL在对查询结果排序时新建了一个临时表处理数据,常见于order by和group by,这种情况性能更差。

1K20

MySQL执行计划解读

EXPLAIN EXTENDED SELECT …… 将执行计划“反编译”成SELECT语句,运行SHOW WARNINGS 可得到被MySQL优化器优化后的查询语句 2....EXPLAIN PARTITIONS SELECT …… 用于分区表的EXPLAIN 执行计划包含的信息 ? id 包含一组数字,表示查询中执行select子句或操作表的顺序 ?...Extra 包含不适合在其他列中显示但十分重要的额外信息 a.Using index 该值表示相应的select操作中使用了覆盖索引(Covering Index) ?...MySQL执行计划的局限 •EXPLAIN不会告诉你关于触发器、存储过程的信息或用户自定义函数对查询的影响情况 •EXPLAIN不考虑各种Cache •EXPLAIN不能显示MySQL在执行查询时所作的优化工作...•部分统计信息是估算的,并非精确值 •EXPALIN只能解释SELECT操作,其他操作要重写为SELECT后查看执行计划

1.4K10

MySQL 执行计划详解

可以使用explain+SQL语句来模拟优化器执行SQL查询语句,从而知道mysql是如何处理sql语句的。 ​...官网地址: https://dev.mysql.com/doc/refman/5.5/en/explain-output.html 1、执行计划中包含的信息 Column Meaning id The...index rows Estimate of rows to be examined filtered Percentage of rows filtered by table condition extra...rows 根据表的统计信息及索引使用情况,大致估算出找出所需记录需要读取的行数,此参数很重要,直接反应的sql找了多少数据,在完成目的的情况下越少越好 explain select * from emp; extra...--using filesort:说明mysql无法利用索引进行排序,只能利用排序算法进行排序,会消耗额外的位置 explain select * from emp order by sal; --using

5.3K30

MySQL执行计划详解

MySQL执行计划详解 在使用MySQL进行数据库开发和运维过程中,我们通常需要对执行计划进行优化。 在系统设计和架构中,数据库是必不可少的一环。而优化数据库查询效率也是非常重要的一环。...MySQL是一个流行的关系型数据库管理系统。本文将介绍MySQL中的执行计划,以及如何使用执行计划来优化查询效率。 什么是执行计划执行计划MySQL查询优化器生成的一组指令,用于执行SQL语句。...在执行SQL语句时,MySQL会对SQL进行解析、优化、执行三个步骤。在优化阶段,MySQL查询优化器会生成一个执行计划,该计划被称为查询计划或执行计划。...; Extra:包含MySQL执行计划中的其他信息,例如是否使用了临时表、是否使用了文件排序等。...在执行计划中,我们可以看到MySQL是如何使用索引的。如果MySQL执行计划中没有使用索引,那么就需要考虑为查询添加索引了。 2.

61710

详解Mysql执行计划explain

SELECT 开始的后面所有SELECT,第一个SELECT 为PRIMARY UNION RESULT:UNION 中的合并结果; DERIVED:派生表的SELECT, FROM子句的子查询 8、Extra...将在表4.3中讨论,但这里可以看到的坏的例子是Using temporary和Using filesort,意思MYSQL根本不能使用索引,结果是检索会很慢 说明:extra列返回的描述的意义 Distinct...Using temporary :当MySQL 在某些操作中必须使用临时表的时候,在Extra 信息中就会 出现Using temporary 。...for group-by:数据访问和Using index 一样,所需数据只需要读取索引即 可,而当Query 中使用了GROUP BY 或者DISTINCT 子句的时候,如果分组字段也在索引 中,Extra...• 部分统计信息是估算的,并非精确值 • EXPALIN只能解释SELECT操作,其他操作要重写为SELECT后查看执行计划

92520

MySQL执行计划(explain)分析

MySQL执行计划(explain)分析 EXPLAIN支持对SELECT、UPDATE、INSERT、REPLACE、DELETE分析 执行计划能知道: SQL如何使用索引 联接查询的执行顺序 查询扫描的数据行数...range:索引范围扫描,常见于between、>、<这样的查询条件 index:全索引撒秒,同ALL的区别是,遍历的是索引数 ALL:全表扫描,效率最差的连接方式 EXTRA列 distinct:优化...通过索引统计信息,估算的所需读取的行数 ROWS值的大小是个统计抽样结果,并不十分准确 FILTERED列 表示返回结果的行数占需读取行数的百分比 FILTERED列的值越大越好 依赖于统计信息 - 执行计划的限制...`customer_id` 捕获有问题的SQL-慢查日志 启动MySQL慢查日志 set global show_query_log_file = /sql_log/show_log.log set...参考 高性能可扩展MySQL数据库设计及架构优化 电商项目,sqlercn,https://coding.imooc.com/class/79.html

93540

执行计划--mysql详解(七)

上篇文章说了,mysql优化器会从cpu和io成本来考虑查询的消耗,possible key来计算全表和索引的成本,选择成本最小的,子查询有物化和semi-join半连接的方式优化,物化会优先哈希索引memory...Mysql优化器-mysql详解(六) Mysql在计算成本之后生成执行计划,用explain来查看,会返回很多列。 Table:查询的表名称,查询几张表显示几行。...Possible key:就是我们前面说的mysql优化器在选择执行计划之前,会先把所有可能用到的索引全部计算一下成本。 Key:真实用到的索引。...Extra: 比如写错sql会报错no tables used。 当where后面语句写错或者永远为false时候报错impossible where。...还可以在执行完之后,执行show warnings会看到mysql优化器优化后的sql语句。

64030

mysql索引及执行计划

什么是索引 类似于一本书的目录,加速查询,会影响到锁的应用 种类 BTREE :在mysql应用99.9% innodb 做范围查询 rtree : mongodb FULLTEXT :对于大字段...BTREE查找算法演变 B-TREE 普通BTREE B+TREE 叶子节点双向指针 B++TREE 枝节点的双向指针 mysql中如何使用BTREE b树分三层 聚簇索引构建过程 leaf 叶子 存储数据行时就是有序的...的范围+指针 构建枝节点 可以优化以id列作为条件作为查询 group by , order by 都可以覆盖到 一个b树最少要有两层结构,根和叶子构成 b树 以数据页加载数据 每个数据页都是一个范围 mysql...工具 desc sql语句 explain sql语句 语句不会执行 ,只会把将来的执行计划打印出来 可以加 format=tree看每一步执行过程或者=json explain sql语句 说明 id...#有可能我们看语句可能会使用a索引 结果使用了b索引有可能是统计信息过旧导致 key,_len 表示索引用了几部分 rows 此次查询预估要扫描多少行 ftltered 索引可以过滤出来多少数据 extra

1.3K31

MySQL Explain查看执行计划

我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。...(QEP:sql生成一个执行计划query Execution plan) mysql> explain select * from user; expain出来的信息有10列,分别是id、select_type...、table、type、possible_keys、key、key_len、ref、rows、Extra,下面对这些字段出现的可能进行解释: 一、 id id相同时,执行顺序由上至下 如果是子查询,id...根据表统计信息及索引选用情况,估算的找到所需的记录所需要读取的行数 十、Extra 该列包含MySQL解决查询的详细信息,有以下几种情况: Using where:列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回的...在执行查询时所作的优化工作 • 部分统计信息是估算的,并非精确值 • EXPALIN只能解释SELECT操作,其他操作要重写为SELECT后查看执行计划

1.9K30
领券