美文网首页
mongodb索引

mongodb索引

作者: ljt001 | 来源:发表于2022-08-17 22:03 被阅读0次

mongodb索引

http://www.runoob.com/mongodb/mongodb-indexing.html

db.col.createIndex({"title":1})
db.col.createIndex({"title":1,"description":-1})
db.col.createIndex({open: 1, close: 1}, {background: true})

查询分析

MongoDB 查询分析可以确保我们所建立的索引是否有效,是查询语句性能分析的重要工具。

MongoDB 查询分析常用函数有:explain() 和 hint()。

explain 操作提供了查询信息,使用索引及查询统计等。有利于我们对索引的优化。

在 users 集合中创建 gender 和 user_name 的索引,以及使用explain:

db.users.ensureIndex({gender:1,user_name:1})
db.users.find({gender:"M"},{user_name:1,_id:0}).explain()

Mongodb 3 查询优化(语句优化、建索引) 一、explain(),语句分析工具

来自 https://www.cnblogs.com/zhang-ke/p/7804007.html

对executionStats返回逐层分析
第一层,executionTimeMillis
最为直观explain返回值是executionTimeMillis值,指的是我们这条语句的执行时间,这个值当然是希望越少越好。
其中有3个executionTimeMillis,分别是:
executionStats.executionTimeMillis
该query的整体查询时间。
executionStats.executionStages.executionTimeMillisEstimate
该查询根据index去检索document获得2001条数据的时间。
executionStats.executionStages.inputStage.executionTimeMillisEstimate
该查询扫描2001行index所用时间。
第二层,index与document扫描数与查询返回条目数
这个主要讨论3个返回项,nReturned、totalKeysExamined、totalDocsExamined,分别代表该条查询返回的条目、索引扫描条目、文档扫描条目。
这些都是直观地影响到executionTimeMillis,我们需要扫描的越少速度越快。
对于一个查询,我们最理想的状态是:
nReturned=totalKeysExamined=totalDocsExamined
第三层,stage状态分析
那么又是什么影响到了totalKeysExamined和totalDocsExamined?是stage的类型。
类型列举如下:

    COLLSCAN:全表扫描
    IXSCAN:索引扫描
    FETCH:根据索引去检索指定document
    SHARD_MERGE:将各个分片返回数据进行merge
    SORT:表明在内存中进行了排序
    LIMIT:使用limit限制返回数
    SKIP:使用skip进行跳过
    IDHACK:针对_id进行查询
    SHARDING_FILTER:通过mongos对分片数据进行查询
    COUNT:利用db.coll.explain().count()之类进行count运算
    COUNTSCAN:count不使用Index进行count时的stage返回
    COUNT_SCAN:count使用了Index进行count时的stage返回
    SUBPLA:未使用到索引的$or查询的stage返回
    TEXT:使用全文索引进行查询时候的stage返回
    PROJECTION:限定返回字段时候stage的返回
    对于普通查询,我希望看到stage的组合(查询的时候尽可能用上索引):
    Fetch+IDHACK
    Fetch+ixscan
    Limit+(Fetch+ixscan)
    PROJECTION+ixscan
    SHARDING_FITER+ixscan
    COUNT_SCAN
    不希望看到包含如下的stage:
    COLLSCAN(全表扫描),SORT(使用sort但是无index),不合理的SKIP,SUBPLA(未用到index的$or),COUNTSCAN(不使用index进行count)

相关文章

  • 24.Mongodb的索引操作

    Mongodb的索引操作 学习目标 掌握 mongodb索引的创建,删除操作 掌握 mongodb查看索引的方法 ...

  • MongoDB索引二(九)

    MongoDB索引二(九) 接上篇MongoDB索引一

  • MongoDB学习报告(二)

    概述 MongoDB索引管理MongoDB查询优化 MongoDB索引管理 单键索引中的每一项都应该对应被索引文档...

  • MongoDB 索引 --- 2022-04-03

    本章介绍MongoDB索引,类似MYSQL,MongoDB也支持索引,区别是MongoDB支持对JSON结构的任意...

  • mongodb索引

    mongodb索引 http://www.runoob.com/mongodb/mongodb-indexing....

  • 【mongoDB】mongoDB组合索引创建

    mongoDB索引创建 testDB库,testColl表索引: 转换为创建语句: 参考 MongoDB 教程ht...

  • MongoDB 索引操作(2)

    前言 上一篇介绍了 MongoDB 的索引基本操作,包括了索引查看、创建、删除,具体可以参考:MongoDB 索引...

  • mongoDB入门二

    索引 索引能够使得MongoDB更高效得执行查询。如果没有索引,MongoDB必须执行集合扫描,即扫描集合中的每个...

  • 128|MongDB 之索引

    https://github.com/qianjiahao/MongoDB/wiki/MongoDB之索引

  • mongo的索引

    MongoDB 索引 createIndex() 方法 MongoDB使用 createIndex() 方法来创建...

网友评论

      本文标题:mongodb索引

      本文链接:https://www.haomeiwen.com/subject/gdkxgrtx.html