MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Perché l'ordinamento di MongoDb è lento con le raccolte di ricerca

Attualmente la ricerca verrà effettuata per ogni employee_details, il che significa per 330000 volte, ma se prima ordiniamo e limitiamo prima della ricerca, saranno solo 10 volte. Ciò ridurrà notevolmente il tempo di query.

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 }},
]) 

Dopo aver provato questo, se vuoi anche ridurre il tempo di risposta puoi definire un index nel campo di ordinamento.

db.employee_details.createIndex( { employee_fname: -1 } )