我有一个文档集合-基本上是sql表的历史转储。每当一行发生更改时,整行都会以json的形式存储在mongodb中,并带有更改时间戳,以便轻松计算diff。因此,对于mongo中的每个文档,我都有一个密钥和时间戳(可以有多个具有相同密钥但不同时间戳的文档(。给定时间段T1和T2,给我T1之前的最后一个版本的文档和T2之前的最后版本的文档。基本上,我正在计算这些文档之间的差异,以找出T1和T2之间发生了什么变化。
理想的指数策略应该是什么?
- 一个索引用于键,另一个索引则用于时间戳。然后首先使用key_index获取所有文档,然后使用timestamp获取该范围内的文档
- 单个复合索引键_timestamp
哪一个会提高性能?
这实际上取决于您将如何查询文档。
一个索引用于键,另一个索引则用于时间戳。然后首先使用key_index获取所有文档,然后使用timestamp获取该范围内的文档。
如果在第一个查询中仅使用key
,而在第二个查询中只使用timestamp
,则此操作效果最佳。
单个复合索引键_timestamp。
如果您在ypour查询中仅使用key
或key + timestamp
进行查询,则此操作效果最佳。但如果您仅在timestamp
上查询,则不会使用索引。
添加一些有用的链接:-
https://docs.mongodb.com/manual/tutorial/create-indexes-to-support-queries/
https://docs.mongodb.com/manual/applications/indexes/