当前位置: 首页 > news >正文

6.如何判断数据库搜索是否走索引?

img

判断是否使用索引搜索

索引在数据库中是一个不可或缺的存在,想让你的查询结果快准狠,还是需要索引的来帮忙,那么在mongo中如何判断搜索是不是走索引呢?通常使用执行计划(解释计划、Explain Plan)来查看查询的情况,如查询耗费的时间、是否基于索引查询等。

索引语法

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

创建索引前

查看根据name查询数据的情况:

> db.user.find({"name":"张三"}).explain()
{explainVersion: '1',queryPlanner: {namespace: 'test.user',indexFilterSet: false,parsedQuery: {name: {'$eq': '张三'}},queryHash: 'A2F868FD',planCacheKey: 'A2F868FD',maxIndexedOrSolutionsReached: false,maxIndexedAndSolutionsReached: false,maxScansToExplodeReached: false,winningPlan: {stage: 'COLLSCAN',filter: {name: {'$eq': '张三'}},direction: 'forward'},rejectedPlans: []},command: {find: 'user',filter: {name: '张三'},'$db': 'test'},serverInfo: {host: 'ADMIN',port: 27017,version: '7.0.6',gitVersion: '66cdc1f28172cb33ff68263050d73d4ade73b9a4'},serverParameters: {internalQueryFacetBufferSizeBytes: 104857600,internalQueryFacetMaxOutputDocSizeBytes: 104857600,internalLookupStageIntermediateDocumentMaxSizeBytes: 104857600,internalDocumentSourceGroupMaxMemoryBytes: 104857600,internalQueryMaxBlockingSortMemoryUsageBytes: 104857600,internalQueryProhibitBlockingMergeOnMongoS: 0,internalQueryMaxAddToSetBytes: 104857600,internalDocumentSourceSetWindowFieldsMaxMemoryBytes: 104857600,internalQueryFrameworkControl: 'trySbeRestricted'},ok: 1
}

关键点看: "stage" : "COLLSCAN", 表示全集合扫描

image-20240314233813092

image-20240314233637504

创建索引后

下面对name建立索引

db.user.createIndex({name:1})

看效果

> db.user.find({"name":"张三"}).explain()
{explainVersion: '1',queryPlanner: {namespace: 'test.user',indexFilterSet: false,parsedQuery: {name: {'$eq': '张三'}},queryHash: 'A2F868FD',planCacheKey: 'A3E454E0',maxIndexedOrSolutionsReached: false,maxIndexedAndSolutionsReached: false,maxScansToExplodeReached: false,winningPlan: {stage: 'FETCH',inputStage: {stage: 'IXSCAN',keyPattern: {name: 1},indexName: 'name_1',isMultiKey: false,multiKeyPaths: {name: []},isUnique: false,isSparse: false,isPartial: false,indexVersion: 2,direction: 'forward',indexBounds: {name: ['["张三", "张三"]']}}},rejectedPlans: []},command: {find: 'user',filter: {name: '张三'},'$db': 'test'},serverInfo: {host: 'ADMIN',port: 27017,version: '7.0.6',gitVersion: '66cdc1f28172cb33ff68263050d73d4ade73b9a4'},serverParameters: {internalQueryFacetBufferSizeBytes: 104857600,internalQueryFacetMaxOutputDocSizeBytes: 104857600,internalLookupStageIntermediateDocumentMaxSizeBytes: 104857600,internalDocumentSourceGroupMaxMemoryBytes: 104857600,internalQueryMaxBlockingSortMemoryUsageBytes: 104857600,internalQueryProhibitBlockingMergeOnMongoS: 0,internalQueryMaxAddToSetBytes: 104857600,internalDocumentSourceSetWindowFieldsMaxMemoryBytes: 104857600,internalQueryFrameworkControl: 'trySbeRestricted'},ok: 1
}

关键点看: "stage" : "IXSCAN" ,基于索引的扫描

image-20240314234018601

compass查看:
image-20240314234112535

建立的索引是否有效,效果如何,都需要通过执行计划查看,以此来判断你的SQL是否需要优化,是否需要创建索引,耗时多久等等,用处可不少呢。

相关文章:

6.如何判断数据库搜索是否走索引?

判断是否使用索引搜索 索引在数据库中是一个不可或缺的存在,想让你的查询结果快准狠,还是需要索引的来帮忙,那么在mongo中如何判断搜索是不是走索引呢?通常使用执行计划(解释计划、Explain Plan)来查看查询…...

Java并发编程的性能优化方案中,哪些方法比较常用

在Java并发编程的性能优化方案中,以下是一些常用的方法: 线程池的使用: 线程池可以复用线程,避免频繁地创建和销毁线程,从而提高系统性能。常用的线程池有FixedThreadPool、CachedThreadPool等。根据任务特性选择合适…...

AcWing 2867. 回文日期(每日一题)

原题链接:2867. 回文日期 - AcWing题库 2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2 日。 因为如果将这个日期按 “yyyymmdd” 的格式写成一个 8 位数是 20200202,恰好是一个回文数。 我们称这样的日期是…...

学习笔记-华为IPD转型2020:3,IPD的实施

3. IPD的实施 1999 年开始的 IPD 转型是计划中的多个转型项目中的第一个(Liu,2015)。华为为此次转型成立了一个专门的团队,从大约20人开始,他们是华为第一产业的高层领导。董事会主席孙雅芳是这个团队的负责人。该团…...

2024腾龙杯web签到题-初识jwt(签到:这是一个登录页面)

什么是 jwt? 它是 JSON Web Token 的缩写,是一个开放标准,定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息,该信息可以被验证和信任,因为它是数字签名的。它就是一种认证机制,…...

Monaco Editor系列(一)启动项目与入门示例解析

前言:作为一名程序员,我们工作中的每一天都在与代码编辑器打交道,相信各位前端程序员对 VS Code 一定都不陌生,VS Code 可以为我们提供代码高亮、代码对比等等功能,让我们在开发的时候,不需要对着暗淡无光的…...

DNA存储技术原理是什么?

随着大数据和人工智能的发展,全球每天产生的数据量剧增,对存储设备的需求也随之增长,数据存储问题日益凸显。传统的硬盘驱动器(HDD)、磁带等冷存和深度归档存储占据数据中心存储的60-70%,由于它们的访问频率…...

多维时序 | Matlab实现VMD-CNN-GRU变分模态分解结合卷积神经网络门控循环单元多变量时间序列预测

多维时序 | Matlab实现VMD-CNN-GRU变分模态分解结合卷积神经网络门控循环单元多变量时间序列预测 目录 多维时序 | Matlab实现VMD-CNN-GRU变分模态分解结合卷积神经网络门控循环单元多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现VMD-CN…...

基于springboot+vue的毕业论文管理系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…...

JavaWeb后端——分层解耦 IOC DI

分层/三层架构概述 三层架构:Controller、Service、Dao 解耦/IOC&DI概述 分层解耦 容器称为:IOC容器/Spring容器 IOC 容器中创建,管理的对象,称为:bean 对象 IOC&DI入门 实现 IOC&DI 需要的注解&#…...

短视频矩阵系统技术交付

短视频矩阵系统技术交付,短视频矩阵剪辑矩阵分发系统现在在来开发这个市场单个项目来说,目前基本上已经沉淀3年了,那么我们来就技术短视频矩阵剪辑系统开发来聊聊 短视频矩阵系统经过315大会以后,很多违规的技术开发肯定有筛选到了…...

Halcon 凹坑检测案例

* 使用元组的方法 ImageFile:[] ImageFile[0]:D:/Halcon/产品上的凹坑检测/1.bmp ImageFile[1]:D:/Halcon/产品上的凹坑检测/2.bmp for Index : 0 to |ImageFile|-1 by 1read_image (Image, ImageFile[Index])* 二值化threshold (Image, Region, 100, 255)* 连通性connection (…...

MD5算法:密码学中的传奇

title: MD5算法:密码学中的传奇 date: 2024/3/15 20:08:07 updated: 2024/3/15 20:08:07 tags: MD5起源算法原理安全分析优缺点比较技术改进示例代码应用趋势 MD5算法起源: MD5(Message Digest Algorithm 5)算法是由MIT的计算机…...

microk8s使用本地私服registry的镜像http协议

开发环境为了能部署服务到microk8s,我们开启了一个本地私库,地址为:http://localhost:5000,那么如何在microk8s中能拉取本地私库中的镜像呢? 直接部署的话,microk8s会用https协议去拉取镜像,所以必须要配置…...

C++初阶 | [九] list 及 其模拟实现

摘要:介绍 list 容器,list 模拟实现,list与vector的对比 list(带头双向循环列表) 导入:list 的成员函数基本上与 vector 类似,具体内容可以查看相关文档(cplusplus.com/reference/list/list/)&…...

如何将Excel两列数据转换为统计图、曲线图、折线图?如何自定义某一列作为Excel的统计图横纵坐标?

这样,横坐标就更换为指定选中的数据了 我们还可以修改统计图的样式 也可以修改统计图的类型...

[HackMyVM] Quick

kali:192.168.56.104 主机发现 arp-scan -l # arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:d2:e0:49, IPv4: 192.168.56.104 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.56.1 0a:00:27:00:00:05 (Un…...

算法体系-12 第 十二 二叉树的基本算法

一 实现二叉树的按层遍历 1.1 描述 1)其实就是宽度优先遍历,用队列 2)可以通过设置flag变量的方式,来发现某一层的结束(看题目)看下边的第四题解答 1.2 代码 public class Code01_LevelTraversalBT {publ…...

【论文笔记合集】LSTNet之循环跳跃连接

本文作者: slience_me LSTNet 循环跳跃连接 文章仅作为个人笔记 论文链接 文章原文 LSTNet [25] introduces convolutional neural networks (CNNs) with recurrent-skip connections to capture the short-term and long-term temporal patterns. LSTNet [25]引入…...

数据库关系运算理论:关系数据操作与关系完整性概念解析

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...

5分钟实现Windows和Linux鼠标指针美化:macOS风格光标主题完整指南

5分钟实现Windows和Linux鼠标指针美化:macOS风格光标主题完整指南 【免费下载链接】apple_cursor Free & Open source macOS Cursors. 项目地址: https://gitcode.com/gh_mirrors/ap/apple_cursor 你是否厌倦了Windows或Linux系统默认的单调鼠标指针&…...

如何备份大量小表组成的数据库_并行导出与多文件并发写入.txt

PHP开发无需选机箱,真正关键的是CPU单核性能、RAM容量和SSD读写延迟;生产服务器的硬件选型属于运维范畴,与PHP编码、调试、本地运行无关。PHP 是运行在服务器端的脚本语言,源码开发阶段根本不需要考虑机箱、散热或 PCIe 插槽——这…...

mysql如何优化索引以减少扫描_mysql高效索引设计原则

MySQL索引失效主因是最左前缀原则被破坏:范围查询或跳过中间列会导致右侧列无法使用索引;ORDER BY需满足最左连续列且排序方向一致;索引过多拖慢写入,应评估选择性与实际使用率;EXPLAIN中key_len和Extra比type更能反映…...

靠谱的东莞高新技术企业认定技术支持公司

在东莞,越来越多的企业希望通过认定高新技术企业来提升自身竞争力,享受政策优惠。而选择一家靠谱的高新技术企业认定技术支持公司至关重要。下面为大家详细介绍相关内容,并重点推荐沐霖信息科技(广东)有限公司。高新技…...

极客卸载工具深度解析:6.69MB的绿色卸载神器为何备受推崇

Windows系统长期面临软件卸载不彻底的问题。 系统自带的卸载功能往往无法清除残留文件和注册表项。 这些残留数据日积月累,会严重影响系统运行效率。 极客卸载工具正是为解决这一痛点而生。 极客卸载采用绿色单文件设计模式。 整个程序解压后仅有6.69MB的体积。 这…...

Sitecore Experience Platform (XP) 预认证 RCE 漏洞链详解

Sitecore 是一个广受欢迎的企业级内容管理系统(CMS),帮助全球企业创建和管理网站及数字媒体内容。近期,安全研究机构 WatchTowr 披露了一条无需任何身份验证即可实现远程代码执行(RCE)的完整漏洞利用链&…...

告别工厂模式:用更清晰的方式在Spring Boot里玩转MQTT发布与订阅(附可运行Demo)

Spring Boot极简MQTT实战:从零构建智能灯控系统 物联网开发中,MQTT协议因其轻量级和高效性成为设备通信的首选方案。但对于刚接触Spring Boot的开发者来说,网上充斥着大量使用复杂工厂模式的实现方案,不仅增加了学习曲线&#xff…...

知识图谱化技术实体链接与知识推理的实现

知识图谱化技术:实体链接与知识推理的实现 在当今大数据时代,知识图谱作为结构化知识的重要载体,广泛应用于搜索引擎、智能问答和推荐系统等领域。其中,实体链接与知识推理是知识图谱构建与应用的核心技术。实体链接旨在将文本中…...

ZonyLrcToolsX:一键下载四大音乐平台歌词的终极解决方案

ZonyLrcToolsX:一键下载四大音乐平台歌词的终极解决方案 【免费下载链接】ZonyLrcToolsX ZonyLrcToolsX 是一个能够方便地下载歌词的小软件。 项目地址: https://gitcode.com/gh_mirrors/zo/ZonyLrcToolsX ZonyLrcToolsX是一款功能强大的跨平台歌词下载工具&…...

别再折腾CUDA了!用Anaconda给集成显卡(集显)5分钟搞定PyTorch CPU版(附Pycharm环境配置)

集成显卡用户5分钟极速搭建PyTorch开发环境指南 深度学习入门时最令人头疼的往往不是算法本身,而是复杂的环境配置。许多教程一上来就要求配置CUDA和cuDNN,让使用集成显卡的开发者望而却步。实际上,对于大多数学习和小型项目开发场景&#x…...