mongodb - MongoDB 如何管理二级索引扫描?

标签 mongodb indexing clustered-index

默认情况下,MongoDB 在文档中的 _id 键上创建索引。但是当我确保额外的索引(像 MySQL 中的 InnoDB 中的辅助索引?)并在之后查询它时,引擎会扫描它然后选择性地扫描 _id 索引以获取文档偏移量?

我很困惑,因为当分片出现时,我是对的,每个 block 都有自己的索引,每个查询会有很多随机读取?

最佳答案

每个分片都有自己的索引(仅包含该分片中的文档),它们将被并行访问(每个分片读取其自己的本地索引分片)并将结果合并。这不是随机读取,而是多个并行索引读取。从单个分片的角度来看,这看起来就像一个普通的索引访问。

这种索引分片也是二级索引在分片环境中不能唯一的原因(没有单一的全局索引可以确保唯一性)。

关于mongodb - MongoDB 如何管理二级索引扫描?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3824274/

相关文章:

python - 不仅查找字符串中子字符串的第一个索引 - python 2.7

MySQL索引减慢查询速度

image - 查找矩阵中元素的索引

java - Java中基于唯一集的List Integer元素创建 "ordinal"簇

sql - 在SQL中,什么情况下我们要对表中的一个字段进行索引,或者同时对表中的2个字段进行索引?

c# - 如何使用官方 MongoDB C# 驱动程序将 BsonDocument 转换为强类型对象?

node.js - 将数据从 Node-Express 后端传递到 Vue 组件

java - Eclipselink mongoDB native 查询 find() 不起作用

mongodb - 带有 reactivemongo 进程的 embedmongo 不退出

mysql - Innodb、聚集索引和 slow_query_log - 受到主键的伤害?