我有一个名为survey_data 的集合,其中包含以下字段
- topic_id
- 指标ID
- 人口编号
调查数据有超过 280 万条记录。我想从给定的一组 indicator_id 和 topic_id 的人口集合中获取人口。但是即使在为所有字段添加复合索引之后,下面的查询也需要 20 秒。
db.survey_data.find({"topic_id":60,"indicator_id":16)
我怎样才能提高性能?可能是对 rails3 使用“mongoid”的单个查询将是首选。
解释{“光标”:“BtreeCursor data_source_index”,“isMultiKey”:假,“n”:2261852,“nscannedObjects”:2261852,“nscanned”:2261852,“nscannedObjectsAllPlans”:2261852,“nscannedAllPlans”:2261852,“scanAndOrder” :假,“indexOnly”:假,“nYields”:21,“nChunkSkips”:0,“millis”:19952,“indexBounds”:{“data_source_id”:[[60,60]]}
调查数据索引:索引({data_source_id:1,data_source_year_id:1,indicator_id:1,indicator_option_id:1,country_id:1,provisions_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} ,{名称:“survey_data_index”,背景:真})