explain详细解释

mysql explain mongodb it

mysql:

explain select *  from user where name=88;

+----+-------------+-------+------+---------------+------------+---------+-------+------+-------+
| id | select_type | table | type | possible_keys | key        | key_len | ref   | rows | Extra |
+----+-------------+-------+------+---------------+------------+---------+-------+------+-------+
1 | SIMPLE      | user  | ref  | index_name    | index_name | 5       | const |    2 | NULL  |
+----+-------------+-------+------+---------------+------------+---------+-------+------+-------+
1 row in set (0.02 sec)

table:显示这一行的数据是关于哪张表的

type:这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALL

possible_keys:显示可能应用在这张表中的索引。如果为空,没有可能的索引。可以为相关的域从WHERE语句中选择一个合适的语句

key: 实际使用的索引。如果为NULL,则没有使用索引。很少的情况下,MYSQL会选择优化不足的索引。这种情况下,可以在SELECT语句中使用USE INDEX(indexname)来强制使用一个索引或者用IGNORE INDEX(indexname)来强制MYSQL忽略索引

key_len:使用的索引的长度。在不损失精确性的情况下,长度越短越好

ref:显示索引的哪一列被使用了,如果可能的话,是一个常数

rows:MYSQL认为必须检查的用来返回请求数据的行数

Extra:关于MYSQL如何解析查询的额外信息。将在表4.3中讨论,但这里可以看到的坏的例子是Using temporary和Using filesort,意思MYSQL根本不能使用索引,结果是检索会很慢

extra列返回的描述的意义

Distinct:一旦MYSQL找到了与行相联合匹配的行,就不再搜索了

Not exists: MYSQL优化了LEFT JOIN,一旦它找到了匹配LEFT JOIN标准的行,就不再搜索了

Range checked for each Record(index map:#):没有找到理想的索引,因此对于从前面表中来的每一个行组合,MYSQL检查使用哪个索引,并用它来从表中返回行。这是使用索引的最慢的连接之一

Using filesort: 看到这个的时候,查询就需要优化了。MYSQL需要进行额外的步骤来发现如何对返回的行排序。它根据连接类型以及存储排序键值和匹配条件的全部行的行指针来排序全部行

Using index: 列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回的,这发生在对表的全部的请求列都是同一个索引的部分的时候

Using temporary 看到这个的时候,查询需要优化了。这里,MYSQL需要创建一个临时表来存储结果,这通常发生在对不同的列集进行ORDER BY上,而不是GROUP BY上

Where used 使用了WHERE从句来限制哪些行将与下一张表匹配或者是返回给用户。如果不想返回表中的全部行,并且连接类型ALL或index,这就会发生,或者是查询有问题不同连接类型的解释(按照效率高低的顺序排序)

system 表只有一行:system表。这是const连接类型的特殊情况

const:表中的一个记录的最大值能够匹配这个查询(索引可以是主键或惟一索引)。因为只有一行,这个值实际就是常数,因为MYSQL先读这个值然后把它当做常数来对待

eq_ref:在连接中,MYSQL在查询时,从前面的表中,对每一个记录的联合都从表中读取一个记录,它在查询使用了索引为主键或惟一键的全部时使用

ref:这个连接类型只有在查询使用了不是惟一或主键的键或者是这些类型的部分(比如,利用最左边前缀)时发生。对于之前的表的每一个行联合,全部记录都将从表中读出。这个类型严重依赖于根据索引匹配的记录多少—越少越好

range:这个连接类型使用索引返回一个范围中的行,比如使用>或<查找东西时发生的情况

index: 这个连接类型对前面的表中的每一个记录联合进行完全扫描(比ALL更好,因为索引一般小于表数据)

ALL:这个连接类型对于前面的每一个记录联合进行完全扫描,这一般比较糟糕,应该尽量避免

 

 

 

mongoDB:

 explain是非常有用的工具,会帮助你获得查询方面诸多有用的信息。只要对游标调用该方法,就可以得到查询细节。explain会返回一个文档,而不是游标本身。如:
> db.test.find().explain()
{
"cursor" : "BasicCursor",
"nscanned" : 1,
"nscannedObjects" : 1,
"n" : 1,
"millis" : 0,
"nYields" : 0,
"nChunkSkips" : 0,
"isMultiKey" : false,
"indexOnly" : false,
"indexBounds" : {

}
}
explain会返回查询使用的索引情况,耗时和扫描文档数的统计信息。




相关推荐

  • 《最高人民法院关于审理城镇房屋租赁合同纠纷案件司法解释的理解与适用》详细解读 《最高人民法院关于审理城镇房屋租赁合同纠纷案件司法解释的理解与适用》详细解读作者:佚名  为正确审理城镇房屋租赁合同纠纷案件,依法保护当事人的合法权益,根据《中华人民共和国民法通则》、《中华人民共和国物权法》、《中华人民共和国合同法》等法律
  • 惠东北大青鸟java培训课程,关于java软件开发培训课程的详细解释 惠东北大青鸟java培训课程,关于java软件开发培训课程的详细解释来源:[惠东北大青鸟java培训]发布日期:2016/1/617:41:55导读:惠东北大青鸟java培训课程,关于java软件开发培训课程的详细解释...惠东北大青鸟ja
  • 那位大牛能详细解释下硬件堆栈和软件堆栈? 那位大牛能详细解释下硬件堆栈和软件堆栈?那位大牛能详细解释下硬件堆栈和软件堆栈?我觉得堆栈只是一个概念,具体的实现应该是硬件提供了相应的支持,而由软件去实施.在8086实模式下编写汇编的时候,使用的push,pop指令都是对寄存器的一种隐式
  • 详细解释数据挖掘中的十大算法 详细解释数据挖掘中的十大算法在一份调查问卷中,三个独立专家小组投票选出的十大最有影响力的数据挖掘算法,今天我打算用简单的语言来解释一下。一旦你知道了这些算法是什么、怎么工作、能做什么、在哪里能找到,我希望你能把这篇博文当做一个跳板,学习更多
  • 惠东北大青鸟java培训课程,关于java软件开发培训课程的详细解释 惠东北大青鸟java培训课程,关于java软件开发培训课程的详细解释学士后java软件工程师课程是北大青鸟专门针对大学生和在职、待业人群精心设计、打造的高端教育培训产品,由权威学术界人士、政府部门领导、知名软件企业技术专家、以及IT产业的杰
  • [转载]【ROM修改教程】安卓系统文件详细解释说明 原文地址:【ROM修改教程】安卓系统文件详细解释说明作者:西风醉晚霞systemapp这个里面主要存放的是常规下载的应用程序,可以看到都是以APK格式结尾的文件。在这个文件夹下的程序为系统默认的组件,自己安装的软件将不会出现在这里,而是da
  • #pragma详细解释(一) azraelly博客园首页新随笔联系订阅管理随笔-49文章-2评论-19#pragma详细解释2010-04-1814:21:00|分类:默认分类|标签:|字号大中小订阅在#Pragma是预处理指令它的作用是设定编译器的状态或者是指示编译器
  • 双硬盘双系统启动菜单制作以及启动菜单boot.ini的详细解释 双硬盘双系统启动菜单制作以及启动菜单boot.ini的详细解释最近家里的电脑硬盘容量不够用了,换硬盘吧,里面的数据拷贝太麻烦,所以就令加一块硬盘了。反正现在的硬盘价格比较便宜不是。原来的硬盘装的是Windowsxp系统,而工作需要Windo
  • 最详细的CFG中文解释 CFG详解什么是config(后面将以CFG代替)?其实就是关于你个人的个性设置,以文件方式存在。里面包括了你在游戏中的设置,以及部分游戏中不能设置的东西。当cs运行前,系统将从CFG中得到游戏初始化信息。CFG中没有任何语句可以提高爆头率
  • 恐怖诡异:世界十大无法解释的谜团 据国外媒体报道,我们都喜欢那些没能解释的怪异故事,于是这些故事构成了我们喜爱关注的未解之谜,从大量文学作品所描述的灵异现象到众多科学无法解释的未解之谜。以下是国外媒体列出的十大没能解释的迷团:1、矿石沼泽地的蜥蜴人  矿石沼泽地的蜥蜴人据说
  • 单片机的modbus RTU的详细解释! Modbus一个工业上常用的通讯协议、一种通讯约定。Modbus协议包括RTU、ASCII、TCP。其中MODBUS-RTU最常用,比较简单,在单片机上很容易实现。虽然RTU比较简单,但是看协议资料、手册说得太专业了,起初很多内容都很难理解
  • tar命令的详细解释 tar命令[root@linux~]#tar[-cxtzjvfpPN]文件与目录....参数:-c:建立一个压缩文件的参数指令(create的意思);-x:解开一个压缩文件的参数指令!-t:查看tarfile里面的文件!特别注意,在参数的下

你的评论

就没有什么想说的吗?

最新博客

关于我们 免责声明 移动版

©2017传客网    琼ICP备15003173号-2    

本站部分文章来源于互联网,版权归属于原作者。
本站所有转载文章言论不代表本站观点,如是侵犯了原作者的权利请发邮件联系站长(weishubao@126.com),我们收到后立即删除。
站内所有资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您自己承担!

X