索引的使用 执行计划 | 学习笔记

简介: 快速学习 索引的使用 执行计划

开发者学堂课程【MongoDB精讲课程(上):索引的使用 执行计划学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/726/detail/12963


索引的使用 执行计划


内容介绍

一、执行计划

 

一、执行计划

分析查询性能( Analyze Query Performance )通常使用执行计划(解释计划、Explain Plan )来查看查询的情况,如查询耗费的时间、是否基于索引查询等。

通常了解建立的索引是否有效、效果如何,需要通过执行计划查看。

语法:

db .collection. find ( query , options ). explain ( options )

/ options 一般情况下使用默认即可。

例如:

查询 userid:”1003” 是否用到索引

db.comment.find({userid:1003}).explain()

此时返回的不是数据,而是执行计划返回的信息。如 queryPlanner 查询的信息,包括查询语句、计划的版本等。重点在于 winningPlan ,即赢计划, COLL 代表 collection,也就是集合, SCAN 是扫描,现在用到的是集合扫描,也就是代表现在并没有用到索引,目前是全局扫描。这里可以用 compass 来看更明显,找到 Explain Plan ,写一个查询userid ,执行计划后发现也没有用到索引。此时加上索引:

db.comment.createIndex({userid:1})

image.png

winningPlan 变为 FETCH ,不再是全局扫描。通过 IXSCAN 查询索引的集合,再通过 FETCH 进行查询,再次使用索引查询时就不用通过全集合扫描,而用的是索引。

image.png

如果数据较大,索引加后面的毫秒可以了解查询的速度是否提升。

相关文章
|
11月前
|
存储 关系型数据库 MySQL
索引及查询优化
索引及查询优化
52 0
|
11月前
|
SQL Oracle 关系型数据库
Oracle优化05-执行计划
Oracle优化05-执行计划
405 0
|
存储 SQL 关系型数据库
Mysql优化之索引(二)
Mysql优化之索引(二)
Mysql优化之索引(二)
|
存储 关系型数据库 MySQL
|
关系型数据库 MySQL 开发者
索引两表优化案例|学习笔记
快速学习索引两表优化案例
86 0
索引两表优化案例|学习笔记
|
SQL 机器学习/深度学习 关系型数据库
explain | 索引优化的这把绝世好剑,你真的会用吗?(下)
explain | 索引优化的这把绝世好剑,你真的会用吗?(下)
explain | 索引优化的这把绝世好剑,你真的会用吗?(下)
|
SQL 监控 关系型数据库
explain | 索引优化的这把绝世好剑,你真的会用吗?(上)
explain | 索引优化的这把绝世好剑,你真的会用吗?(上)
explain | 索引优化的这把绝世好剑,你真的会用吗?(上)
|
存储 SQL 缓存
MySql索引分析及查询优化
MySql索引分析及查询优化
170 0
MySql索引分析及查询优化
|
存储 分布式数据库 数据库
全表扫描|学习笔记
快速学习 全表扫描
|
SQL 关系型数据库 MySQL
SQL优化之避免全表扫描
在mysql5.6官方文档中关于full table scan的介绍如下: An operation that requires reading the entire contents of a table, rather than just selected portions using an index.
1863 0