1
我正在构建mongodb对象并将它传递给mongo存储库的findAll方法。如何在MongoDB中为动态标准建立索引以提高性能
如何通过围绕所有这些领域设计索引来实现更快的性能?
val criteriaQuery = MongoDBObject.newBuilder
criteriaQuery += OrderNames.CLIENT_ID -> clientId
if (StringUtils.isNotBlank(orderId))
criteriaQuery += OrderNames.ORDER_ID -> orderId
if (StringUtils.isNoneBlank(customerEmail))
criteriaQuery += OrderNames.CUSTOMER_EMAIL -> customerEmail
if (orderStartDate != null) {
if (orderEndDate != null)
criteriaQuery += OrderNames.ORDER_DATE -> MongoDBObject("$gte" -> orderStartDate, "$lte" -> orderEndDate)
else
criteriaQuery += OrderNames.ORDER_DATE -> MongoDBObject("$gte" -> orderStartDate)
}
else if(orderEndDate != null)
criteriaQuery += OrderNames.ORDER_DATE -> MongoDBObject("$lte" -> orderEndDate)
return criteriaQuery.result
我在这里的问题是: 如果我有A,B,C,d,E,F的标准。 如果我在(a,b,c,d,e,f)上创建索引
它对(a,c,d,e,f),(a,c),(a,e ,f),(a,c,f))等。 我需要考虑所有这些?
您能否介绍一下复合索引在这里的工作原理?我有很多可能性,因为我们在标准中有7 8个字段。 – Malav
例如 集合上的以下索引: {x:1,y:1,z:1} 可以支持以下索引支持的查询: {x:1} {x:1,y:1 } https://docs.mongodb.com/v3.2/tutorial/create-indexes-to-support-queries/ – Marco
感谢您的回复。我还有一个问题,如果我有x,y,z,a,标准中的b字段。我只用3 x,y,z索引。这应该没问题吗? – Malav