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

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

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

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

相关文章
|
12天前
|
数据库 索引
深入探索数据库索引技术:回表与索引下推解析
【10月更文挑战第15天】在数据库查询优化的领域中,回表和索引下推是两个核心概念,它们对于提高查询性能至关重要。本文将详细解释这两个术语,并探讨它们在数据库操作中的作用和影响。
36 3
|
23天前
|
SQL Oracle 关系型数据库
SQL优化-使用联合索引和函数索引
在一次例行巡检中,发现一条使用 `to_char` 函数将日期转换为字符串的 SQL 语句 CPU 利用率很高。为了优化该语句,首先分析了 where 条件中各列的选择性,并创建了不同类型的索引,包括普通索引、函数索引和虚拟列索引。通过对比不同索引的执行计划,最终确定了使用复合索引(包含函数表达式)能够显著降低查询成本,提高执行效率。
|
6月前
|
存储 SQL 关系型数据库
explain详解和索引最佳实践
explain详解和索引最佳实践
|
索引
索引下推
大家多多 关注
145 0
|
存储 关系型数据库 MySQL
索引及查询优化
索引及查询优化
66 0
|
存储 SQL 关系型数据库
Mysql优化之索引(二)
Mysql优化之索引(二)
Mysql优化之索引(二)
|
存储 关系型数据库 MySQL
|
关系型数据库 MySQL 开发者
索引两表优化案例|学习笔记
快速学习索引两表优化案例
110 0
索引两表优化案例|学习笔记
|
存储 SQL 缓存
MySql索引分析及查询优化
MySql索引分析及查询优化
206 0
MySql索引分析及查询优化
|
SQL 关系型数据库 MySQL
这个大表走索引字段查询的 SQL 怎么就成全扫描了
这个大表走索引字段查询的 SQL 怎么就成全扫描了
这个大表走索引字段查询的 SQL 怎么就成全扫描了