mongodb的最佳索引策略



我有一个文档集合-基本上是sql表的历史转储。每当一行发生更改时,整行都会以json的形式存储在mongodb中,并带有更改时间戳,以便轻松计算diff。因此,对于mongo中的每个文档,我都有一个密钥和时间戳(可以有多个具有相同密钥但不同时间戳的文档(。给定时间段T1和T2,给我T1之前的最后一个版本的文档和T2之前的最后版本的文档。基本上,我正在计算这些文档之间的差异,以找出T1和T2之间发生了什么变化。

理想的指数策略应该是什么?

  1. 一个索引用于键,另一个索引则用于时间戳。然后首先使用key_index获取所有文档,然后使用timestamp获取该范围内的文档
  2. 单个复合索引键_timestamp

哪一个会提高性能?

这实际上取决于您将如何查询文档。

一个索引用于键,另一个索引则用于时间戳。然后首先使用key_index获取所有文档,然后使用timestamp获取该范围内的文档。

如果在第一个查询中仅使用key,而在第二个查询中只使用timestamp,则此操作效果最佳。

单个复合索引键_timestamp。

如果您在ypour查询中仅使用keykey + timestamp进行查询,则此操作效果最佳。但如果您仅在timestamp上查询,则不会使用索引。

添加一些有用的链接:-

https://docs.mongodb.com/manual/tutorial/create-indexes-to-support-queries/

https://docs.mongodb.com/manual/applications/indexes/

最新更新