[英]Mongodb taking too much time to find the record
我在本地主机上有mongodb,在数据库中我有9000万条记录。 当我通过db.emails.find({"name":"example"})
搜索任何记录时,获取结果的时间太长。 有什么办法可以提高mongodb的速度吗?
为name
字段创建索引
db.emails.createIndex( { name: 1} )
如果您没有字段索引,则mongodb必须在执行查询时执行集合扫描 ,即扫描集合中的每个文档以检查与查询匹配的name
字段的值。 另一方面,该索引仅存储可以快速检查的name
字段的有序值。
索引键有限制。 索引条目的总大小必须小于1024个字节。 但是,如果要搜索有关字符串内容的查询,可以使用文本索引:
db.emails.createIndex( { name: "text"} )
另外,如果要搜索完全匹配,则可以使用哈希索引:
db.emails.createIndex( { name: "hashed" })
通常,为了加速mongodb查询,可以做的是准备一个组合索引。
在您的情况下,由于它是电子邮件地址,因此我建议您将邮件作为id并使用不区分大小写的正则表达式执行搜索。 例如,如果您希望所有人都拥有gmail帐户,则可以执行如下搜索
db.users.find({_id:/@gmail.com/})
我相信这将大大加快您的代码
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.