公众号设计平台,seo关键词排名优化费用,网站获利模式,管理公司网站一般做什么如果现在的数据集很大#xff0c;构建索引会花费很长时间。可是#xff0c;为了优化索引#xff0c;我们必会通过explain命令#xff0c;找出需要添加索引的字段。可是在生产环境中#xff0c;要在大数据集建立所以#xff0c;这简直是梦魇#xff0c;如何解决呢。我们记… 如果现在的数据集很大构建索引会花费很长时间。可是为了优化索引我们必会通过explain命令找出需要添加索引的字段。可是在生产环境中要在大数据集建立所以这简直是梦魇如何解决呢。我们记了一次实验。 db.user.find({textsumongodb}).explain(); provides information such as the following: { cursor : BasicCursor, indexBounds : [ ], nscanned : 57594, nscannedObjects : 57594, n : 3 , millis : 108 } CursorBasicCursor表示没有用到索引类似SQL数据库的全部扫描。BtreeCursor表示使用了索引。 indexBounds使用到的索引 nscanned扫描的总记录数 nscannedObjects扫描的总对象数 这查询没有用到索引。 解决方法 由于我们的架构是复制集模式所以建议先把从节点移除集群。具体操作 1.先查看复制集状态rs.status()找出secondary对应的name字段的值。例如 name:192.168.0.1:27017 2.在主机上移除从节点 rs.remove(192.168.0.127017) 3.在该节点上建立索引text字段的索引。db.user.ensureIndex({text:1}) 4.之后把该节点重新加回到replset中。切换主从操作