- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章聊聊explain查看执行计划由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
在MySQL性能调优的时候explain是必须要使用的关键字,它的作用是可以查看sql语句的执行信息,包括表的读取顺序,应用到的索引等信息.
用法:explain + sql语句.
本篇我们先熟悉explain的内容,为下篇学习索引奠定基础.
explain内容 。
查看user全表查询的执行计划:
mysql> explain select * from user; 。
。
id 。
id表示select查询语句的执行顺序或者是操作表的执行顺序.
id的值有二种情况:
select_type 。
select_type表示查询类型,它的值域为:SIMPLE、PRIMARY、SUBQUERY、DERIVED、UNION、UNION RESULT.
table 。
数据行是从哪个表获取的.
type 。
表示查询使用了哪种类型,它的值域:ALL、index、range、ref、eq_ref、const、system。这是我们优化时重点关注的一个指标.
从最好到最差排序:
system>const>eq_ref>ref>range>index>ALL.
阿里巴巴SQL优化规范:
system:表中只有一行记录的查询,类似系统表.
eq_ref:多表时唯一索引扫描,对于每一个索引,表中只有一行记录相匹配.
index:索引物理文件全扫描,速度比较慢,比全表扫描性能好一点.
ALL:全表扫描.
possible_keys 。
可能应用在这个表的索引,可以会一个或者多个,不一定是实际查询使用的索引.
key 。
查询中实际使用的索引,如果为null表示没有使用索引.
如果是覆盖索引,则只显示在key中.
key_len 。
表示索引字段的最大可能长度,并不是实际的长度,它是根据表定义得到的,而不是通过表检索得到的。长度越短越好.
ref 。
表示索引的哪一列被使用了,可能是个常数。哪些列或者常量被用于查找索引列上的值.
rows 。
根据表的信息和索引使用情况,大致估算的查找到所需的记录需要扫描的行数。越小越好.
Extra 。
扩展信息.
阿里巴巴SQL优化规范:
这里提到了覆盖索引,extra列会出现using index.
extra还有其他比较重要的信息:
using filesort:用到了外部的索引排序,即MySQL无法利用索引完成排序.
using temptory:使用了临时表.
using where:使用了where过滤.
还有其他几种,不是经常出现,我们就不说明了.
原文地址:https://www.toutiao.com/i6937641430135685646/ 。
最后此篇关于聊聊explain查看执行计划的文章就讲到这里了,如果你想了解更多关于聊聊explain查看执行计划的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
INSERT 或 UPDATE 语句中的 EXPLAIN 关键字是执行查询,还是只是为您显示(“解释”)查询 - MySQL 新手,无法足够快地找到问题。 最佳答案 Reference说 The EX
这两个命令有什么区别? db.collection.explain().find() db.collection.find().explain() 最佳答案 正在运行 db.collection.ex
SQLite Explain(解释) 在SQLite 语句之前,可以使用 “EXPLAIN” 关键字或 “EXPLAIN QUERY PLAN” 短语,用于描述表的细节。 如果省略了 EXPLAI
我有一个查询,在 WHERE 子句之后有几个 filter 条件。 此外,大多数涉及的列都有索引。 当我运行 EXPLAIN 命令时,我看到: -> Bitmap Index Scan on fea
我需要实现对 MySQL EXPLAIN 命令输出的自动分析,它将查询标记为“坏”(例如,如果不使用索引)、“中等”(可以优化)和“好” ”。 是否有任何现有的解决方案或任何算法来实现它? 最佳答案
我在 SQL 字符串中的查询前面添加了 EXPLAIN 我在本地服务器上运行的网站的网页 但是我如何才能看到 EXPLAIN 的输出? Echo 和 print_r 都返回:资源 id #33 我如何
我有一个快速且非常简单的问题。 我有一个包含以下 SQL 的表: CREATE TABLE `users` ( `id` int(20) NOT NULL AUTO_INCREMENT, `use
我有一个缓慢的 MySQl 查询,大约需要 15 秒才能运行。所以我做了一些调查,发现我可以使用 EXPLAIN 语句来查看瓶颈在哪里。所以我这样做了,但真的无法破译这些结果。 如果我不得不尝试一下,
我在数据库中有一个“posts”表,它在 user_id 上有非唯一索引(键:MUL)。 mysql> show columns from posts; +---------+------------
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve thi
我有一个非常大、复杂的查询,我正在尝试使用 MySQL EXPLAIN SELECT 或 EXPLAIN EXTENDED SELECT 进行优化。 如果我针对查询运行它,我会看到查询中的每个表都在
8.2.2. EXPLAIN Output Format基于以下 SQL 查询的连续优化,给出了几个 EXPLAIN 示例: EXPLAIN SELECT tt.TicketNumber, tt.Ti
下面的查询完全符合我的预期,它很直观并且不会生成中间表。缺点是需要很长时间才能完成。 在这种情况下,我要做的是逐步分解查询并创建那些中间表和索引。这一次,我想更好地处理 explain 提供的提示,并
今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数
Mysql Explain 这里做一个资料的全面整理。 一.语法 explain < table_name > 例如: explain select * from t3 where
MySQL的EXPLAIN命令用于SQL语句的查询执行计划(QEP)。这条命令的输出结果能够让我们了解MySQL 优化器是如何执行SQL语句的。这条命令并没有提供任何调整建议,但它能够提供重要的信息
使用方法,在select语句前加上explain就可以了: 如:explain select * from test1 EXPLAIN列的解释: table:显示
我正在使用 python shap包以更好地理解我的机器学习模型。 (来自 documentation:“SHAP(SHpley Additive exPlanations)是一种解释任何机器学习模型
如标题。我想知道我的查询是否优化得很好。 最佳答案 是的,在Cassandra 1.2中,您可以打开request tracing进行查询。 关于optimization - 有没有办法 "EXPLA
如何使用 DB2 的 Explain 功能? -- 既可以运行它,也可以使用它来优化查询。是否有更好的工具可用于 DB2? 我以前构建过查询,但我必须知道它们需要多长时间的唯一方法是运行它们并为它们计
我是一名优秀的程序员,十分优秀!