面试题答案
一键面试创建部分索引语法
在MongoDB中,可以使用createIndex
方法来创建部分索引。语法如下:
db.collection.createIndex(
<key-and-order-specifier>,
{
partialFilterExpression: <document>,
[options]
}
)
其中<key-and-order-specifier>
指定索引字段及排序方向(例如{field1: 1}
),partialFilterExpression
是一个过滤文档,用于指定仅对满足该过滤条件的文档创建索引。
查询性能方面不同
- 普通索引:对集合中的所有文档建立索引,查询时无论文档是否满足特定条件,索引都可能被使用。在查询条件范围广,数据分布均匀时,普通索引能有效提升查询性能。但如果查询条件只涉及部分数据,普通索引会扫描大量无关数据,降低查询效率。
- 部分索引:仅对满足特定过滤条件的文档建立索引。当查询条件与部分索引的过滤条件匹配时,部分索引能显著提升查询性能,因为它减少了索引扫描的数据量。但如果查询条件不匹配部分索引的过滤条件,该索引无法使用,查询性能可能受影响。
存储开销方面不同
- 普通索引:由于对集合所有文档建立索引,占用存储空间较大。随着集合数据量增加,索引文件大小也会线性增长,可能导致较高的存储成本。
- 部分索引:仅对满足过滤条件的部分文档建立索引,相比普通索引,占用存储空间显著减少。尤其在大数据集场景下,部分索引能有效降低存储开销。