Mongodb索引或不索引
关于是否索引的快速问题。对于在文档数组中查找特定“用户id”的集合,经常会进行查询。见下文-Mongodb索引或不索引,mongodb,indexing,Mongodb,Indexing,关于是否索引的快速问题。对于在文档数组中查找特定“用户id”的集合,经常会进行查询。见下文- _id:"bQddff44SF9SC99xRu", participants: [ { type:"client", user_id:"mi7x5Yphuiiyevf5", screen_name:"Bob", active:false }, { type:"agent", user
_id:"bQddff44SF9SC99xRu",
participants:
[
{
type:"client",
user_id:"mi7x5Yphuiiyevf5",
screen_name:"Bob",
active:false
},
{
type:"agent",
user_id:"rgcy6hXT6hJSr8czX",
screen_name:"Harry",
active:false
}
]
}
在“participants.user_id”中添加索引是个好主意吗?数组经常添加到中,偶尔删除项
更新
在使用同一组数据进行本地测试之后,我添加了索引,这显然降低了mongo进程的高CPU使用率。由于这些文件只有少量更新,我认为这是正确的举措。我现在正在研究更多可能的索引和优化。为什么要索引?查询时是否存在严重的延迟问题?或者你是在尝试提前优化 归根结底,这里有很多变量,很难回答。包括但不限于:
- 多久进行一次查询
- 集合中有多少文档
- 每个文档中有多少用户
- 插入文档后从文档中添加/删除用户的频率
- 您是否需要优化收藏的插入/更新
可能索引不是答案,而是您如何构建数据。您是否定期对其进行查询?相对于查询的性能增益,您能否接受增加的写入时间?这些通常是决定是否使用索引的因素。这里不应该影响你的是别人的意见。做对你有用的事情。所以是的,mongo进程的cpu使用率很高。我使用Mongodb Compass识别的特定查询似乎每秒执行几次。我可以看到,它每次都会搜索整个收藏(34000个,而且还在增长)。用户将至少被插入到文档中一次,并且任何进一步的添加或删除可能每小时发生10次。