Actualmente, la búsqueda se realizará para cada empleado_detalles, lo que significa 330000 veces, pero si ordenamos y limitamos primero antes de la búsqueda, será solo 10 veces. Esto reducirá en gran medida el tiempo de consulta.
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 }},
])
Después de probar esto, si desea disminuir el tiempo de respuesta, puede definir un index en el campo de clasificación.
db.employee_details.createIndex( { employee_fname: -1 } )