索引

索引支持 MongoDB 中查询的高效执行。如果没有索引,MongoDB 必须扫描集合中的每个文档才能返回查询结果。如果查询存在适当的索引,MongoDB 会使用该索引来限制必须扫描的文档数量。

虽然索引可以提高查询性能,但添加索引会对写入操作的性能产生负面影响。对于具有高写入读取比率的集合,索引的成本很高,因为每次插入还必须更新任何索引。

用例

如果您的应用程序在相同字段上重复运行查询,您可以在这些字段上创建索引以提高性能。例如,考虑以下场景:

设想 指数类型
人力资源部门经常需要通过员工 ID 查找员工。您可以在员工ID字段上创建索引以提高查询性能。 单字段索引
销售人员经常需要按位置查找客户信息。位置存储在带有statecity和 等字段的嵌入对象中zipcode。您可以在整个对象上创建索引location,以提高对该对象中任何字段的查询性能。 对象上的单字段索引
杂货店经理经常需要按名称和数量查找库存物品,以确定哪些物品库存不足。item您可以在和字段上创建单个索引quantity 以提高查询性能。 复合索引

开始使用

要了解如何使用索引执行常见任务,请参阅以下页面:

细节

索引是一种特殊的数据结构,它以易于遍历的形式存储集合数据集的一小部分。MongoDB 索引使用 B树数据结构。

索引存储特定字段或字段集的值,按字段值排序。索引条目的排序支持高效的相等匹配和基于范围的查询操作。此外,MongoDB 可以使用索引中的排序返回排序结果。

限制

某些限制适用于索引,例如索引键的长度或每个集合的索引数量。有关详细信息,请参阅 索引限制。

默认索引

MongoDB在创建集合期间在 _id字段上创建唯一索引。该索引可防止客户端插入两个具有相同字段值的文档。您不能删除该索引。_id``_id

笔记:

分片集群中,如果您使用_id字段作为分片键,那么您的应用程序 必须确保字段中值的唯一性_id您可以通过使用具有自动生成的ObjectId 的字段来执行此操作

索引名称

索引的默认名称是索引键和索引中每个键的方向(1-1)的串联,使用下划线作为分隔符。例如,创建的索引的{ item : 1, quantity: -1 }名称为item_1_quantity_-1

索引一旦创建就无法重命名。相反,您必须 删除索引并使用新名称重新创建索引。

要了解如何指定索引名称,请参阅指定索引名称。

索引构建性能

应用程序在索引构建期间可能会遇到性能下降的情况,包括对集合的读/写访问受到限制。有关索引构建过程的更多信息,请参阅填充集合上的索引构建,包括复制环境中的索引构建部分。

了解更多

Copyright © 上海锦木信息技术有限公司 all right reserved,powered by Gitbook文件修订时间: 2023-09-01 17:10:26

results matching ""

    No results matching ""