mysql5.7用EXPLAIN分析sql时关于索引的疑问

分析sql及表结构如下
MySQL > EXPLAIN SELECT COUNT(UA.id) AS tp_count FROM ck_user_audit UA RIGHT JOIN ck_user AS U ON U.id = UA.uid LIMIT 1;
+----+-------------+-------+------------+-------+---------------+------+---------+------+-------+----------+----------------------------------------------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+-------+------------+-------+---------------+------+---------+------+-------+----------+----------------------------------------------------+
*| 1 | SIMPLE | U | NULL | index | NULL | pid | 5 | NULL | 23003 | 100.00 | Using index |
| 1 | SIMPLE | UA | NULL | ALL | NULL | NULL | NULL | NULL | 3304 | 100.00 | Using where; Using join buffer (Block Nested Loop) |
+----+-------------+-------+------------+-------+---------------+------+---------+------+-------+----------+----------------------------------------------------+
MySQL > desc ck_user;
+-----------------+---------------------+------+-----+------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+---------------------+------+-----+------------+----------------+
| id | int(10) | NO | PRI | NULL | auto_increment |
| phone | char(50) | YES | MUL | NULL | |
| pid | int(10) | YES | MUL | NULL | |

| email | char(100) | YES | MUL | NULL | |

执行sql用的是id这个主键,为什么分析出来却显示用的是pid这个索引?

0

1个回答

图片说明可以用这个来解释

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
SQL优化(三)—— 索引、explain分析
https://www.cnblogs.com/gdwkong/articles/8505125.html 一、什么是索引 索引是一种排好序的快速查找的数据结构,它帮助数据库高效的查询数据 在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结构上实现高效的查找算法.这种数据结构,就是索引 一般来说索引本身也很大,不可能全部存...
使用explain优化sql
对于复杂、效率低的sql语句,我们通常是使用explain sql 来分析sql语句,这个语句可以打印出,语句的执行过程。这样方便我们分析,进行优化。        首先,说一下,explain查询出来的数据如何分析。 table :这一列是查询设计的表。 type :很重要的一列,显示了查询使用了那种类型,是否使用的索引,能反映出语句的质量。一般这个指标从好到坏依次是:system>co
MySQL的Explain关键字查看是否使用索引
explain显示了MySQL如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。简单讲,它的作用就是分析查询性能。  explain关键字的使用方法很简单,就是把它放在select查询语句的前面。  mysql查看是否使用索引,简单的看type类型就可以。如果它是all,那说明这条查询语句遍历了所有的行,并没有使用到索引。   比如:explain sel
MySQL中explain的用法及查看使用了哪些索引!
1.EXPLAIN的使用方法: 在select语句前加上explain就可以了。 如:explain select surname,first_name form a,b where a.id=b.id 2.EXPLAIN列的解释: table:显示这一行的数据是关于哪张表的 type:这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg
用MySql的查询分析语法explain来优化查询和索引
http://hi.baidu.com/wtnzone/item/beb83840a4971af4dd0f6c77  数据库最常见的操作就是查询了,我们经常要用"SELECT"语法对已有的表进行某种检索,但是在实际应用中,查询前我们并不知道该查询会如何运行、会使用多少时间、会涉及多少字段和记录,每次输入了SQL语句,点击运行,然后慢慢等待结果的出现,好的查询语句效率很高,而有时候也会遇到
利用EXPLAIN分析sql语句的性能
使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的sql语句,可以帮助选择更好的索引和写出更优化的查询语句。。使用explain我看可以sql执行的相关信息: 表的读取顺序 数据读取操作的操作类型 哪些索引可以使用 哪些索引被实际使用表之间的引用 每张表有多少行被优化器查询 EXPLAIN 的每个输出行包括下面的列:idselect查询的序列号,包含一组数字,
MySQL单列索引和组合索引的选择效率与explain分析(没图)
http://blog.csdn.net/xtdhqdhq/article/details/17582779 一、先阐述下单列索引和组合索引的概念: 单列索引:即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。 组合索引:即一个索包含多个列。 如果我们的查询where条件只有一个,我们完全可以用单列索引,这样的查询速度较快,索引也比较瘦身。如果我们的业
MongoDB实战-使用EXPLAIN分析慢查询
explain优化查询的试验步骤
【MySQL】基于MySQL的SQL优化(一)——从用explain关键字分析SQL语句开始
explain显示了MySQL如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。 如图:![这里写图片描述](http://img.blog.csdn.net/20161017212512939) 下面讲解explain的所有属性。 1)id:SELECT识别符。这是SELECT查询序列号。这个不重要,查询序号即为sql语句执行的顺序。
使用 EXPLAIN 关键字 检查SQL语句效率
explain详细说明 通过explain可以知道mysql是如何处理语句,分析出查询或是表结构的性能瓶颈。通过expalin可以得到: 1. 表的读取顺序 2.表的读取操作的操作类型 3.哪些索引可以使用 4. 哪些索引被实际使用 5.表之间的引用 6.每张表有多少行被优化器查询 explain显示字段 1. id :语句的执行顺序标识 2. select_type:
数据库查询优化:使用explain分析sql语句执行效率
Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优化语句。 Explain语法:explain select … from … [where …] 例如:explain select * from news; 输出:+----+--------...
EXPLAIN分析SQL的执行计划
通过EXPLAIN分析低效SQL的执行计划 可以通过EXPLAIN或者DESC命令获取MySQL如何实行SELECT语句的信息,包括在SELECT语句执行过程中表如何连接和连接的顺序。 explain select * from myuser where loginname='2017' id:1 select_type :SIMPLE table:myuser
MySQL 使用explain分析sql语句的查询效率(一)
mysql explain用于分析sql 语句的执行及数据库索引的使用。本文将致力于帮助大家充分理解explain所返回的各项参数,从而使大家快速掌握explain用法技巧。如果你在看其他教程或视频后仍觉得云里雾里。那么请通读本文。用法explain的用法相当简洁,直接在sql语句前加上EXPLAIN 即可,例如:EXPLAIN select * FROM ec_stores_info where
分析 SQL 语句方式一:Explain
目的:优化效率差的SQL。 语法:EXPLAIN SELECT …… 前言 想优化 SQL 之前,我们得知道 SQL 的执行计划(如是全表扫描还是索引扫描等),Explain 就能查看 SQL 的执行计划。 总结 EXPLAIN不会告诉你关于触发器、存储过程的信息或用户自定义函数对查询的影响情况 EXPLAIN不考虑各种Cache EXPLAIN不能显示MySQL在执行查询时所作的...
Explain索引优化实例
关于Explain的执行计划详细信息请参考上篇文章。下面用Explain分析案例。 首先建立表student结构,该表目前没有索引,如下: 一、案例1 案例:查询学号student_num=1,年龄age>20,班级class=1的记录 id为1,只有一次查询; select_type为SIMPLE,表示该条SQL为简单查询; table为student,表示查询来自...
hive_调优笔记一EXPLAIN解析
接触越多,越需要了解hive背后的理论知识以及底层的一些实现细节,会让用户更加高效地使用Hive    --摘于HIVE 编程指南.  ----1     使用EXPLAIN     了解Hive是如何工作,第一个就是需要了解EXPLAIN功能     使用例子:     hive >explain select sum(id) from my; OK ABSTRACT
mysql之explain详解(分析索引的最佳使用)
在这里对explain的各个字段进行详细的分析,来帮助大家分析自己所写的sql是否最佳的使用了索引。
MySQL 使用explain分析sql语句的查询效率(二)
本文将继续上文讲解其他与效率相关的参数 explain所返回的其他参数key为使用的索引,而使用的索引又影响着连接类型type,它们共同决定了可能扫描行数rows 参数解析 (4)type (重点) 联接类型。查询效率的关键,下面按照从最佳类型到最坏类型进行排序 1.system 存在于手册中(没怎么见过),最好的连接类型,是const联接类型的一个特例。 2.const 表最多有
SQL中explaind的使用介绍
一、explain 能干嘛? 1、表的读取顺序 2、数据读取操作的操作类型 3、哪些索引可以使用 4、哪些索引被实际使用 5、表之间的使用 6、每张表有多少行被优化器查询 二、怎么使用? 1、explain + sql  2、执行计划包含的信息 id:select 查询到序列号,包含一组数字,表示查询中select子句或操作表的顺序。 id有三种值:决定表的读取顺序 (...
postgresql的Explain命令结果分析
网上查看了一些对explain命令的结果分析,但是要不就是不清楚,要不就是一大堆,所以特意看了官方文档,并记录如下语法如下: explain + (sql语句),摘取结果如图下面是引用官方文档:1、Seq Scan on tenk1从左到右介绍说明: 1、预计启动时间 (如果每一行都被检索了,则为0)2、预计执行计划的总行数3、此计划节点输出的行的平均宽度(以字节为单位)2、添加where条件的
用explain来解析sql语句,然后建立正确的索引
用explain mysql中来解析sql语句是一个非常好用的工具,它可以查看你的sql语句的执行是直接全部扫描,还是经过索引优化的。用它来分析sql语句也可以避免一些无用的索引。下面来看一个例子: 用sql来查询表中是否有匹配的a或者b(一共180w条记录) 第一版: 一条语句解决所有问题 索引结构:id为唯一主键和索引 sql语句:SELECT `id`,`a`,`b` FROM `
如何对SQL进行优化查询之使用explain关键字进行分析?
(一)通过关键字explain的分析我们可以得出什么结果? 表的读取顺序 表的读取操作的读取类型 哪些索引有可能会被使用到 哪些索引被实际使用了 表之间的引用 每张表有多少行被优化器查询 (二)大体来看每个字段都代表什么含义? id: 可以用来看出来先执行的顺序,也就是当id值越大,就越先被MySQL执行,如果id相同的话 可以认为是同一组,按照从上到下顺序执行 select_type: 能...
Mysql索引与Explain结合优化SQL
目录 1、索引 2、借助Explain 分析 sql 语句 3、案例分析: 4、总结 1、索引   官方定义:索引(Index) 是帮助 MySQL 高效获取数据的数据结构。 索引为什么是一种数据结构,它又是怎么提高查询的速度?我们拿最常用的二叉树来分析索引的工作原理。如下图: 创建索引的优势: 1. 提高数据的检索速度,降低数据库 IO 成本:使用索引的意义就是通过缩小表...
explain-SQL语句执行计划分析
explainhttps://www.cnblogs.com/xiaoboluo768/p/5400990.htmlhttp://blog.51cto.com/lijianjun/1881208id:查询序号 select_type:查询类型 table:查询针对的表       有可能是       实际的表名  如select * from t1;       表的别名  如select * ...
explain字段解释
EXPLAIN列的解释: table:显示这一行的数据是关于哪张表的 type:这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALL possible_keys:显示可能应用在这张表中的索引。如果为空,没有可能的索引。可以为相关的域从WHERE语句中选择一个合适的语句。这个列表是在优化过程的早期创建的,因此有些列出
数据库调优教程(四)Explain性能分析命令
在发现慢查询后,要怎样才能知道语句的问题发生在哪里。本章将介绍怎样使用Mysql提供的数据库性能分析命令,对sql语句进行分析。
Mysql利用explain确认是否使用索引
MySQL表结构CREATE TABLE `tb_details` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `order` varchar(255) COLLATE utf8_bin DEFAULT NULL, `user` varchar(255) COLLATE utf8_bin DEFAULT NULL, `so...
Sql 检查是否使用索引explain
使用解释函数explain,只需添加在sql语句之前即可:explain select * from sh_member_info where sex = '1'我们只需要注意一个最重要的type 的信息很明显的提现是否用到索引:type结果值从好到坏依次是:system > const > eq_ref > ref > fulltext > ref_or_null ...
MongoDB:4-MongoDB的索引和查询分析(explain)
索引 索引就是用来加速查询的。 数据库索引与书籍的索引类似:有了索引就不需要翻遍整本书,数据库则可以直接在索引中查找,使得查找速度能提高几个数量级。在索引中找到条目以后,就可以直接跳转到目标文档的位置。 索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构 创建普通索引,使用命令 db.col
MongoDB 索引和explain使用
mongodb 索引使用作用 索引通常能够极大的提高查询。 索引是一种数据结构,他搜集一个集合中文档特定字段的值。 B-Tree索引来实现。 创建索引db.collection.createIndex(keys, options) keyskeys由文档字段和索引类型组成。如{"name":1} key 表示字段 value 1,-1 1表示升序,-1降序 optionsoptions 创建索引
6 Mycat原理解析-EXPLAIN语句处理
前面,我们已经讲过了Mycat如何判断sql类型,然后针对不同类型的sql就行不同的处理【Mycat原理解析-SQL语句的处理】,下面,我们来看看其中的explain语句,Mycat是怎么处理的。   Mycat提供的EXPLAIN语句并不是用来查看执行计划的,而是用来查看路由结果的,如果要查询真正的执行计划,拿到路由结果里面的sql语句,到具体的实例上面查看就行了。例如,下面的sql语句,就被
[MySQL]--查询性能分析工具-explain关键字
explain显示了MySQL如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。 explain的使用方法很简单,只需要在select查询语句前面加上explain关键字就行。下面给出一个实例: 下面给出回显的数据的含义: (1)id:SELECT识别符,这是SELECT查询序列号。 (2)select_type:select类型,它有以下几种...
通过Explain查询sql执行计划
在我们查询sql 的时候,有时候查询速度很慢,这时候我们就需要通过EXPLAIN 来获取MySQL如何实行SELECT语句的信息,来判断应该优化哪里. EXPLAIN select t.id,t.name,r.result from zt_task t,tiz_zentao_result r WHERE r.object_id = t.id and r.action='finis...
小米开源工具SOAR之SQL性能信息解读与优化建议
大家都知道数据库中的explain执行计划工具,能帮我们分析自己所编写SQL的性能,如索引是否使用了、临时表是否使用了、文件排序是否使用了、扫描的行数以及各个查询的执行顺序等一些SQL执行反馈信息,但这个explain出来的图表不够通俗易懂,也只有日积月累的童鞋,才能更好的使用这个工具**。而此时小米开源的soar工具能帮我将explain里面的信息解读出来,提示我们写出更加优质的sql代码。**...
MySQL中使用explain和profile分析SQL执行计划和性能
注:上一篇博文中提到了如何定位效率比较低的sql语句,本文重在介绍如何使用explain和profile对其进行分析和改进,因为系统设计的数据表和SQL语句较少,所以此种方案不失为一种好的选择。一、explain介绍在分析查询性能时,考虑EXPLAIN关键字同样很管用。EXPLAIN关键字一般放在SELECT查询语句的前面,用于描述MySQL如何执行查询操作、以及MySQL成功返回结果集需要执行的行
Oracle -- 用EXPLAIN PLAN 分析SQL语句(转载)
From:http://blog.csdn.net/kj021320/archive/2006/08/19/1096021.aspx 如何生成explain plan?   解答:运行utlxplan.sql. 建立plan 表   针对特定SQL语句,使用 explain plan set statement_id = 'tst1' into plan_table   运行utlxpl...
MYSQL 用 explain 语句判断select查询是否使用了索引
我有一个 zje 表 我先用一个普通的 select语句,用explain解析,看看有什么显示: explain select * from zje; 主要关注的是,type 和 key: type = ALL :表示全表扫描 type = const :表示通过索引一次就找到了 key = NULL:表示没有使用索引 key = primary :表示使用了主键 ke
mysql 中的explain 结果分析
一个简单的explain结果explain select * from xx\G;explain 中的列1.id:是一个编号 标示select所属的行2.select_type列    1) SUBQUERY    2)DERIVED    3)  UNION    4)  UNION RESULT3table列 显示对应行正在访问那个表4.type列 从差到优依次为   1)ALL(全表扫描) ...
explain使用+慢SQL分析
MySQL查询截取分析步骤:一、开启慢查询日志,捕获慢SQL二、explain+慢SQL分析三、show profile查询SQL语句在服务器中的执行细节和生命周期四、SQL数据库服务器参数调优一、开启慢查询日志,捕获慢SQL1、查看慢查询日志是否开启[sql] view plain copy<span style="font-family:'Courier New';font-size:1...
MySQL优化——使用explain来分析sql语句
MySQL为我们提供了一个分析sql语句执行计划的利器,那就是explain。通过explain我们可以分析一个sql语句完整的执行计划,包括使用的索引,扫描的行数以及是否使用了文件排序等等,在我们分析sql语句,优化sql语句中具有重要的意义。
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 数据库课程设计疑问 数据库课程设计疑问

相似问题

1
mysql5.7用EXPLAIN分析sql时关于索引的疑问
1
DW连接mysql时出现Your PHP server doesn't have the MySQL
1
关于Mysql的问题!!!在线等!!!!
2
关于是否走索引的问题
0
mysql使用STRAIGHT_JOIN链接不走索引问题,大神留步啊
1
java关于日志存入数据库问题
3
复杂sql,请大神解析,没办法理解以下这条sql语句。
1
关于爬下来数据的清洗
2
[sql 问题] 请问 如何 查询一个表中中数据在另一个表中出现的次数?
1
用swing表格获取显示MySQL数据库的信息并显示总是抛出NullPointerException异常
1
搭建sqli-labs时出现这个问题怎么解决?
1
mysql5.7一个10G的库drop后空间为释放该如何解决?
1
请问各位知道怎么解决Wampserver无法连接mysql时出现1862:登录密码过期的问题吗?麻烦帮下忙,谢谢!
2
Centos7部署安装ECShop时一直显示创建数据库失败
4
sql大数据自关联查询优化
0
scrapy爬取中华英才网职位发现职位数量不一致,代码逻辑应该没问题,是什么原因?用scrapy-redis能解决吗?
3
用Spring的 jdbcTemplate访问数据库。可为什么更新不了数据库的东西呀。没用到事务
0
Mac下安装了MAMP 和MAMP PRO,发现Mysql文件位置没在一起,在terminal中查询时怎么能让数据全部显示呢?
1
MyCat作为数据库中间件时,sql中字符串包含@@会偶现报表不存在的错误
3
Navicat连接mysql时,总是要设置字符集。有一劳永逸的办法吗?