J'ai une collection appelée survey_data qui a les champs suivantsMongoDB de recherche dans des rails
- topic_id
- indicator_id
- population_id
Le survey_data a plus de 2,8 millions de dossiers. Je veux aller chercher les populations de la collection de populations pour un ensemble donné de indicator_id et topic_id. Mais la requête ci-dessous prend 20 secondes même après avoir ajouté un index composé pour tous les champs.
db.survey_data.find({"topic_id":60,"indicator_id":16)
Comment puis-je améliorer les performances? Peut être une requête unique en utilisant "mongoid" pour rails3 serait préférable.
Expliquer { "curseur": "BtreeCursor data_source_index", "isMultiKey": false, "n": 2.261.852, "nscannedObjects": 2261852, "nscanned": 2261852, "nscannedObjectsAllPlans": 2261852, "nscannedAllPlans": 2261852, "scanAndOrder": faux, "indexOnly": false, "nYields": 21, "nChunkSkips": 0, "Millis": 19952, "indexBounds": { "data_source_id": [ [ 60, ] ] }
SurveyData Index: index ({DATA_SOURCE_ID: 1, data_source_year_id: 1, indicator_id: 1, indicator_option_id: 1, country_id: 1, provinces_state_id: 1 , health_regions_id: 1, health_regions_type_id: 1, other_administrative_boundary_id: 1, sub_population_options_id: 1, reportability_id: 1}, {Name: "survey_data_index", fond : true} )
S'il vous plaît inclure votre déclaration de ensureIndex. Avez-vous aussi une explication sur la découverte?voir: http://docs.mongodb.org/manual/reference/method/cursor.explain/ –
@MatthewNichols - MongoDB met-il 16seconds à charger environ 1 livre lakh lors de l'exécution d'une requête sur des documents 28lakhs dans une collection avec un seul champ comme condition? – user1428016
Veuillez reformuler. Lakh n'est pas un mot anglais. –