MongoDB:通过两个字段建立索引的最快方法?

时间:2018-11-06 21:08:35

标签: mongodb optimization indexing nosql

我正在使用MongoDB作为游戏服务器网络的数据库。网络上的每个播放器都有两种方法来识别它们:用户名和UUID。这两个字段对于每个玩家而言都是唯一的,并且在给定玩家名称的情况下检索玩家的UUID,在给定其UUID的情况下检索其名称,并给其名称或UUID的情况下检索整个文档通常非常有用。不考虑空间要求,哪种索引方案可使这些查询最快地运行?

我的想法是为两个字段中的每个字段创建一个唯一的索引,但是我很好奇MongoDB是否提供了更好的优化,尤其是当我只想检索另一个字段时。我已经读过复合索引可以允许进行覆盖查询,而无需检索完整文档,但是与每个字段只有一个索引相比,我不确定这是否会降低性能。

1 个答案:

答案 0 :(得分:0)

性能始终取决于瓶颈(无论是磁盘I / O,网络,CPU还是RAM),但是如果您的播放器文档很大,则两个复合索引会有所帮助: [UUID,用户名] < / strong>和 [用户名,UUID] 。第一种将是检索给定UUID的用户名的最有效方法,而后者将有助于检索给定用户名的UUID。

在实践中,我认为仅[username]和[UUID]上的唯一索引将几乎一样快。