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

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

开发者学堂课程【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

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

相关文章
|
2月前
|
SQL Oracle 关系型数据库
SQL优化-使用联合索引和函数索引
在一次例行巡检中,发现一条使用 `to_char` 函数将日期转换为字符串的 SQL 语句 CPU 利用率很高。为了优化该语句,首先分析了 where 条件中各列的选择性,并创建了不同类型的索引,包括普通索引、函数索引和虚拟列索引。通过对比不同索引的执行计划,最终确定了使用复合索引(包含函数表达式)能够显著降低查询成本,提高执行效率。
|
存储 关系型数据库 MySQL
索引及查询优化
索引及查询优化
68 0
|
存储 SQL 关系型数据库
Mysql优化之索引(二)
Mysql优化之索引(二)
Mysql优化之索引(二)
|
存储 关系型数据库 MySQL
|
SQL 机器学习/深度学习 关系型数据库
explain | 索引优化的这把绝世好剑,你真的会用吗?(下)
explain | 索引优化的这把绝世好剑,你真的会用吗?(下)
explain | 索引优化的这把绝世好剑,你真的会用吗?(下)
|
SQL 监控 关系型数据库
explain | 索引优化的这把绝世好剑,你真的会用吗?(上)
explain | 索引优化的这把绝世好剑,你真的会用吗?(上)
explain | 索引优化的这把绝世好剑,你真的会用吗?(上)
|
存储 分布式数据库 数据库
全表扫描|学习笔记
快速学习 全表扫描
141 0
|
SQL 索引 存储
执行计划的生成
原文:执行计划的生成   SQL Server使用许多技术来优化资源消耗: 基于语法的查询优化; 无用计划匹配以避免对简单查询的深度优化; 根据当前分布统计的索引和连接策略; 多阶段的查询优化以控制优化开销; 执行计划缓冲以避免重新生成执行计划;   以上技术按以下顺序执行: 解析器; 代数化器; 查询优化器; 执行计划生成,缓冲和hash计划生成; 查询执行;   其执行顺序如下:    一、解析器(parser)   当查询被提交时,SQL Server将它传递给关系引擎中的解析器。
1137 0
|
SQL 数据库 索引