我在索引生成过程中有一个问题。 下面这种情况,只创建复合索引可以吗? 单独创建唯一索引有什么好处?
//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)
);
}
这是一个很好的问题,但并不像您首先想象的那么容易回答。
我认为,如果您考虑使用目的,只需创建一个“复合索引”就足够了,因为它基本上是基于第一个成员的“分组依据”和基于附加成员的“排序”。
所以答案是是,只需“复合索引”就足够了。但是,由于数据库在复合索引中搜索,因此与只有“唯一索引”的情况相比,搜索速度要慢得多。这种差异很小,只有当集合中的元素数量很大时才会出现。
但是,由于数据库只需维护一个索引,因此写入速度稍快,并且不需要运行唯一性检查。
因此,如果格式化很困难且不经常写入,并且元素很多,那么仅创建“复合索引”是“不值得”的。 但如果应用程序编写繁重并且元素很少,那么您不需要“唯一索引”