MongoDB 唯一索引与复合索引

问题描述 投票:0回答:1

我在索引生成过程中有一个问题。 下面这种情况,只创建复合索引可以吗? 单独创建唯一索引有什么好处?

  • 当应用下面的“复合索引”和“唯一索引”时,查询“memberId”和“where”子句的条件时使用“唯一索引”,当仅应用“复合索引”时,使用“复合索引”。
  • 那么,只配置‘复合索引’而不创建‘唯一索引’可以吗?
//compound index
  memberId_1_contentId_1
//unique index
  memberId_1

//example query
default List<ContentBuyList> getContentBuyListByMemberId(String memberId) {
return this.findAll(
contentBuyList.memberId.eq(memberId)
);
}
mongodb indexing
1个回答
0
投票

这是一个很好的问题,但并不像您首先想象的那么容易回答。

我认为,如果您考虑使用目的,只需创建一个“复合索引”就足够了,因为它基本上是基于第一个成员的“分组依据”和基于附加成员的“排序”。

所以答案是,只需“复合索引”就足够了。但是,由于数据库在复合索引中搜索,因此与只有“唯一索引”的情况相比,搜索速度要慢得多。这种差异很小,只有当集合中的元素数量很大时才会出现。

但是,由于数据库只需维护一个索引,因此写入速度稍快,并且不需要运行唯一性检查。

因此,如果格式化很困难且不经常写入,并且元素很多,那么仅创建“复合索引”是“不值得”的。 但如果应用程序编写繁重并且元素很少,那么您不需要“唯一索引”

© www.soinside.com 2019 - 2024. All rights reserved.