MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Schlechte Suchaggregationsleistung

von https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/

ForeignField Gibt das Feld aus den Dokumenten in der FromCollection an. $lookup führt einen Gleichheitsabgleich für das ForeignField durch in das localField aus den Eingabedokumenten. Wenn ein Dokument in der From-Sammlung das ForeignField nicht enthält, behandelt $lookup den Wert für Vergleichszwecke als null.

Dies wird genauso durchgeführt wie jede andere Abfrage.

Wenn Sie keinen Index für das Feld _AccountId haben, wird für jeden der 10.000 Posts eine vollständige Tablescan-Abfrage durchgeführt. Der Großteil der Zeit wird in diesem Tablescan verbracht.

db.users.ensureIndex("_AccountId", 1) 

beschleunigt den Prozess, sodass statt 10.000 Tabellenscans 10.000 Indextreffer durchgeführt werden.