このクエリはアプリケーションで非常に時間がかかります。データベースには約200万レコードが含まれています。DoctrineでのMongoDBクエリの最適化
$results = $queryBuilder
->field('extra.targetPlayerId')->exists(FALSE)
->field('permission')->equals('public')
->field('time')->gt($weekEndTime) // variable is timestamp
->field('time')->lte($startTime) // variable is timestamp
->map(
'function() {
var total = 0;
if (this.comments) {
total += this.comments.length;
}
if (this.likes) {
total += this.likes.length;
}
if (total > 0) {
emit(this.playerId, total);
}
}'
)
->reduce(
'function(key, values) {
var total = 0;
for (value in values) {
total += values[value];
};
return total;
}'
)->getQuery()->execute();
このクエリはどのように最適化できますか?あなたは私にインデックスの提案を教えてもらえますか?