Ich habe eine Mongo-Sammlung namens Elemente mit ~ 9 Millionen Dokumente. Jedes Dokument hat die folgende Struktur:MongoDB find() langsam beim Abfragen eines 64-Bit-Integer-Felds
{
_id : "1",
Timestamp : Numberlong(12345),
Nationality : "ITA",
Value: 5
}
Wenn ich die folgende Abfrage ausführen:
db.Elements.find({ Nationality: 'ITA' })
die Abfrage führt schnell (wenige Millisekunden).
Wenn stattdessen betreibe ich die folgende Abfrage:
db.Elements.find({ Timestamp: 12345 })
die Abfrage ist langsam, in der Größenordnung von zehn Sekunden. Natürlich, wenn ich einen Index auf Timestamp
hinzufügen, läuft die Abfrage viel schneller. Das Ausführen der gleichen Abfrage für das Feld Value
, das vom Typ Int32 ist, wird so schnell wie die erste Abfrage ausgeführt.
Was ich versuche zu verstehen ist: Warum würde die zweite Abfrage (ohne Index) deutlich schlechter als die erste durchführen? Behandelt Mongo Int64-Werte anders als andere Werte?
Auch bitte 'explain (" executionStats ")' für beide Arten von ganzen Zahlen. mit und ohne Indizes – Saleem
Danke @JohnnyHK für den Vorschlag. Ich habe das gerade gemacht. –