MST

星途 面试题库

面试题:MongoDB部分索引的创建方法及基础性能影响

请阐述在MongoDB中创建部分索引的语法,并说明与普通索引相比,部分索引在查询性能和存储开销方面有哪些不同?
18.7万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

创建部分索引语法

在MongoDB中,可以使用createIndex方法来创建部分索引。语法如下:

db.collection.createIndex(
   <key-and-order-specifier>,
   {
     partialFilterExpression: <document>,
     [options]
   }
)

其中<key-and-order-specifier>指定索引字段及排序方向(例如{field1: 1}),partialFilterExpression是一个过滤文档,用于指定仅对满足该过滤条件的文档创建索引。

查询性能方面不同

  • 普通索引:对集合中的所有文档建立索引,查询时无论文档是否满足特定条件,索引都可能被使用。在查询条件范围广,数据分布均匀时,普通索引能有效提升查询性能。但如果查询条件只涉及部分数据,普通索引会扫描大量无关数据,降低查询效率。
  • 部分索引:仅对满足特定过滤条件的文档建立索引。当查询条件与部分索引的过滤条件匹配时,部分索引能显著提升查询性能,因为它减少了索引扫描的数据量。但如果查询条件不匹配部分索引的过滤条件,该索引无法使用,查询性能可能受影响。

存储开销方面不同

  • 普通索引:由于对集合所有文档建立索引,占用存储空间较大。随着集合数据量增加,索引文件大小也会线性增长,可能导致较高的存储成本。
  • 部分索引:仅对满足过滤条件的部分文档建立索引,相比普通索引,占用存储空间显著减少。尤其在大数据集场景下,部分索引能有效降低存储开销。