現在、ルックアップはすべてのemployee_detailsに対して行われ、これは330000回を意味しますが、ルックアップの前に最初に並べ替えて制限すると、10回だけになります。これにより、クエリ時間が大幅に短縮されます。
db.getCollection('employee_details').aggregate([
{$sort : {employee_fname: -1}},
{$limit :10},
{
$lookup : {
from : "departments",
localField : "department_id",
foreignField : "_id",
as : "Department"
}
},
{ $unwind : { path: "$Department", preserveNullAndEmptyArrays: true }},
])
これを試した後、応答時間を短縮したい場合でも、index を定義できます。 並べ替えフィールドで。
db.employee_details.createIndex( { employee_fname: -1 } )