7.使用EXPLAIN 来分析SQL和表结构_2
possible_keys ------ 显示可能应用在这张表的索引,一个或多个
查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被实际查询使用
key ------ 实际使用的索引。如果为NULL,则没有使用索引
查询中若使用了 覆盖索引,则该索引和查询的select字段重叠
select 字段可以是索引的一部分,即索引中的字段可以将要查询的字段覆盖(是select后面的字段,不是where后面的字段)
key_len ------ 表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度,在不损失精度的情况下,长度越短遇到越好
key_len 显示的值为索引字段的最大可能长度,并非实际使用长度,
即key_len是根据定义计算而得,不是通过表内检索出的
rows ------ 根据表统计信息及索引选用情况,大致估算出找到所需的记录需要读取的行数
Extra ------ 包含不适合在其他列中显示但十分重要的额外信息
1.Using filesort 说明mysql会对数据使用一个外部的索引序列,而不是按照表内的索引顺序进行读取
MySQL无法利用索引完成的排序操作称为 ‘文件排序’,(需要避免)
2.Using temporary 使用临时表保存中间结果,MySQL在对查询结果排序时使用临时表。常见于排序order by和分组查询group by
一般使用排序order by和 分组查询 group by 这种需要使用到索引排序的功能的时候,
要按照创建索引时的个数和顺序来,否则很容易产生文件内排序 和 临时表 ,影响性能
为什么要按照这个索引的个数和顺序来:一个索引,创建一棵树,如果是联合索引,第二列会放在第一列后面
第二列也做了排序,首先根据第一列排序的结果,在第一列一样的情况下,第二列再排序
如:A = 22 AND B = 33
你假设一下 C = A*1000 + B,然后根据C做BTREE,以A先放,A相同的情况下按B的顺序放
存的时候 A 先 存,确定了A的位置之后,再存B;;查的时候,也要先有A,有了A的准确位置,才能拿到B
Using index ------ 表示相应的select 操作中使用了覆盖索引(Covering Index),避免访问了表的数据行,效率不错
如果同时出现using where ,表明索引被用来执行索引键值的查找
如果没有同时出现 using where,表明索引用来读取数据而非执行查找动作
Using where ------ 表明使用了 where 过滤
Using join buffer ------ 使用了连接缓存
impossible where ------ where 子句的值总是 false,不能用来获取任何元祖
select tables optimized away ------
distinct ------ 优化 distinct 操作,在找到第一行匹配的元组后即停止找同样值的动作
7.使用EXPLAIN 来分析SQL和表结构_2的更多相关文章
- 7.使用EXPLAIN 来分析SQL和表结构_1
explain:查看执行计划 使用explain 关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的 分析你的查询语句或是表结构的性能瓶颈 使用explain 可以获 ...
- SQL Server 一句Sql把表结构全部查询出来
--一句Sql把表结构全部查询出来 SELECT 表名 = Case When A.colorder=1 Then D.name Else '' End, 表说明 = Case When A.colo ...
- sql复制表结构,复制表内容语句
sql复制表结构,复制表内容语句 select * into b from a where 1<>1 select top 0 * into b from a insert into a ...
- SQL server 表结构转Oracle SQL脚本
SQL server 表结构转Oracle SQL脚本 /****** Object: StoredProcedure [dbo].[getOracle] Script Date: 2019/7/25 ...
- 使用explain来分析SQL语句实现优化SQL语句
用法:explain sql 作用:用于分析sql语句 mysql> explain select * from quser_1 where loginemail = "quctest ...
- oracle用EXPLAIN PLAN 分析SQL语句
EXPLAIN PLAN 是一个很好的分析SQL语句的工具,它甚至可以在不执行SQL的情况下分析语句. 通过分析,我们就可以知道ORACLE是怎么样连接表,使用什么方式扫描表(索引扫描或全表扫描)以及 ...
- sql复制表结构及复制表数据
一.复制表结构 假设我们有一个数据表Person,有Id,FirstName,LastName,Weight,Height5个列,表结构可以参考这一篇.现在我们想创建一个新表叫People,表结构和P ...
- sql 查看表结构
sqlserver 查看表结构 exec sp_help @TableName --得到表信息.字段,索引.constraint. exec sp_pkeys @TableName --得到主键. e ...
- SQL复制表结构或表数据
需求: 软件开发过程中,一般会部署两个数据库:一个测试数据库提供给开发和测试过程使用:一个运维数据库提供上线使用.当需求变化需增加表时,会遇到数据库表结构或表数据同步的问题,这时就要复制表结构或表数据 ...
随机推荐
- 将SSRF升级为RCE(AWS环境)
原文:https://generaleg0x01.com/2019/03/10/escalating-ssrf-to-rce/ 查找域名范围: 在枚举客户端的子域名时.找到了子域名[docs] 打开这 ...
- swift 第五课 定义model类 和 导航栏隐藏返回标题
1. 网络请求返回数据时候,把数据转化为model,但是有时候会返回空的字符串,所以加载了个长度的判断: class Model : NSObject{ var details_url:String? ...
- 微信小程序 左右分类滚动列表
今天需求个类似得到app分类的功能,效果如图: 左右分别滚动,互不干扰,先把简单的布局和样式搭好. <view class="page"> <view class ...
- PHP常用正则表达式精选
$regex = '[\u4e00-\u9fa5]'; //匹配中文字符的正则表达式 $regex = '^[\u4E00-\u9FA5A-Za-z0-9]+$'; or $regex = '^[\u ...
- 最新 优刻得java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.优刻得等10家互联网公司的校招Offer,因为某些自身原因最终选择了优刻得.6.7月主要是做系统复习.项目复盘.LeetCo ...
- 洛谷 题解 P3942 【将军令】
本题算法:贪心+排序+搜索+并查集+图论 输入中的t可以不用管,毕竟这只是特殊情况的标志 题目中虽然没有很明确地说明这是一棵树,但是题目中说有n个点,但是只有n-1条边,想用这n-1条边把整个图连通起 ...
- icell更改用户管理员
管理员页面是http://127.0.0.1:8080/PORTAL/tsysLoginController/admin超级管理员是http://127.0.0.1:8080/PORTAL/tsysL ...
- mac 环境下mysql登陆失败问题Access denied for user 'root'@'localhost' (using passwordYES)
1.停止mysql服务 sudo /usr/local/mysql/support-files/mysql.server stop 2.进入mysql的bin目录 cd /usr/local/mysq ...
- 【AtCoder】AGC008
AGC008 A - Simple Calculator 如果符号相同,那么如果y比x大直接走,否则需要两次反号 如果符号不同,需要绝对值的差加一次反号 如果有一个是0,且y比x要小,那只需要一次反号 ...
- CentOS7下使用Sonatype Nexus3搭建Docker私有仓库
相关资料: Sonatype Nexus3官方网站:https://www.sonatype.com/download-oss-sonatype Sonatype Nexus3 Docker Hub地 ...