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

Mongodb 2.4 2dsphere-Abfragen sehr langsam (mit $geoIntersects)?

Die Abfrage im Protokoll stimmt nicht mit der Abfrage überein, die Sie ausführen, der Speicherort ist anders:

[ 116.3426399230957, 39.95959281921387 ] vs.
[ 116.3175773620605, 39.97607231140137 ]

Ich glaube auch nicht, dass Sie Ihre gesamte Protokollzeile reproduziert haben, da sie nur area erwähnt und nicht deliver_area .

Allerdings sind sie nicht wirklich langsam . Im ersten Fall dauerte es 103 ms, was in einigen Fällen passieren kann, wenn Ihr Server andere E / A ausführt. Die zweite Abfrage dauerte 5 ms als explain() Ausgabe sagt es Ihnen.

Am auffälligsten ist aber, dass Ihr Hauptkriterium id: 59 ist . Ich weiß nicht, was Ihre _id ist Feld ist, aber wenn Sie einen Index auf id setzen dann sollte dies nicht einmal eine 2dsphere verwenden müssen überhaupt indexieren — es sei denn, Sie haben natürlich viele Dokumente mit id=59 . In diesem Fall könnten Sie mit einem zusammengesetzten Schlüssel auf { id: 1, deliver_area: '2dsphere' } besser dran sein .