2010-10-08 3 views
4

Я делаю запрос where in box в коллекции документов ~ 40K. Запрос занимает ~ 0.3 с, и выборка документов занимает ~ 0,6 секунды (в результирующем наборе есть ~ 10K документов).Геопространственный индекс MongoDB: как быстро?

Документы довольно малы (~ 100 байт каждый), и я ограничиваю результат, чтобы вернуть только lat/lon.

Похоже, очень медленно. Является ли это правильным, или я делаю что-то неправильно?

+0

Hi Pawel! Вы пробовали использовать .explain() (http://www.mongodb.org/display/DOCS/Optimization#Optimization-Explain) по вашему запросу? – walla

+0

У меня есть. {u'allPlans ': [{u'cursor': u'GeoBrowse-box ', u'indexBounds': {}}], u'cursor ': u'GeoBrowse-box', u'indexBounds ': { }, u'millis ': 278, u'n': 10479, u'nscanned ': 10479, u'nscannedObjects': 10479, u'oldPlan ': {u'cursor': u'GeoBrowse-box ', u' indexBounds ': {}}} Не знаю, что это значит. –

+0

, так что ... ваш тип курсора - это GeoBrowse-box - потому что вы используете запрос $ box. просмотр коллекции с использованием индекса, потому что nscanned - 10K, а не 40K. Вы можете показать коллекцию .stats()? – walla

ответ

1

Кажется, очень медленно. Примерный эквивалентный поиск, который я делал на PostgreSQL, например, почти слишком быстро, чтобы измерить (то есть, вероятно, быстрее, чем 1 мс).

Я мало знаю о MongoDB, но уверены ли вы, что геопространственный индекс действительно включен? (Я спрашиваю, потому что в РСУБД легко определить таблицу с геометрическими/географическими столбцами, но не определить фактическую индексацию соответственно, и поэтому вы получите примерно такую ​​же производительность, что и то, что вы описываете).

Смежные вопросы