我在一个集合中存储了这类文档:
{
_id : ...
sender: {memberid:<something>, name:<something>}
}
我通过子字段sender.memberid
为集合编制索引。我在某个地方读到,按子文件索引的效率(性能方面)不如按字段索引,所以将文档结构更改为:
{
_id: ...
senderid: ...
sendername: ...
}
并且senderid
索引会导致更快的插入和检索,但文章没有解释原因。这两种方法真的有什么不同吗?如果有,为什么?
索引本身只影响存储。阅读只应该更快,而不是更慢。由于索引需要更新,存储速度会受到一些影响。但这适用于您创建的每个索引。
如果索引是在顶层还是在某些嵌入文档中,则不应该是一个问题。
否则,这听起来更像是过早的优化。像预期的那样使用数据库,并创建嵌入文档并为其编制索引。