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
ここに私の質問は: 私は判断基準では、F、A、B、C、D、Eを持っている場合。 そして、もし私が(a、b、c、d、e、f)のインデックスを作成したら、
これは(a、c、d、e、f)、(a、c)、 、f)、(a、c、f))など これらのすべてを考慮する必要がありますか?
ここで複合インデックスがどのように機能するかを説明してください。基準には7つのフィールドがあるので、私には多くの可能性があります。例えば コレクションに次のインデックスについて – 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