2010-10-08 10 views
4

Je fais une requête where in box sur une collection de documents ~ 40K. La requête prend ~ 0.3s et l'extraction de documents prend ~ 0.6 secondes (il y a ~ 10K documents dans le jeu de résultats).Indice géospatial de MongoDB: à quelle vitesse?

Les documents sont assez petits (~ 100 octets chacun) et je limite le résultat pour retourner le lat/lon seulement. Il semble très lent. Est-ce vrai ou est-ce que je fais quelque chose de mal?

+0

Salut Pawel! Avez-vous essayé .explain() (http://www.mongodb.org/display/DOCS/Optimization#Optimization-Explain) sur votre requête? – walla

+0

J'ai. {u'allPlans ': [{ucursor': u'GeoBrowse-box ', u'indexBounds': {}}], u'curseur ': u'GeoBrowse-box', u'indexBounds ': { }, u'millis ': 278, u'n': 10479, u'scanned ': 10479, u'nscannedObjects': 10479, u'oldPlan ': {u'curseur': u'GeoBrowse-box ', u' indexBounds ': {}}} Aucune idée de ce que cela signifie. –

+0

alors ... le type de votre curseur - est la boîte de GeoBrowse - parce que vous utilisez $ box query. scanining collection en utilisant l'index parce que nscanned est 10K pas 40K. pouvez-vous montrer la collection .stats()? – walla

Répondre

1

Cela semble très lent en effet. Une recherche à peu près équivalente sur PostgreSQL, par exemple, est presque trop rapide à mesurer (c'est-à-dire probablement plus rapide que 1ms).

Je ne connais pas grand-chose à MongoDB, mais êtes-vous certain que l'index géospatial est réellement activé? (Je demande parce que dans les SGBDR, il est facile de définir une table avec des colonnes géométriques/géographiques sans toutefois définir correctement l'indexation réelle, et ainsi vous obtenez à peu près les mêmes performances que ce que vous décrivez).