在mongodb中,索引是正在进行的活动还是我们需要一个cron?
对不起,如果这个问题很愚蠢的话。 我不熟悉数据库的整个索引,我想知道我是否发出了下面的命令在mongodb中,索引是正在进行的活动还是我们需要一个cron?,mongodb,Mongodb,对不起,如果这个问题很愚蠢的话。 我不熟悉数据库的整个索引,我想知道我是否发出了下面的命令 > db.posts.ensureIndex({location:"2d"}) 即使发布了新条目,数据库也会被索引吗?还是在每次新输入后都需要输入此命令 索引是否对2000多个条目的数据库也有很大影响?一旦索引到位,它将始终用于任何后续读取和写入。您不需要继续执行该命令 请记住,对现有的大型数据集发出ensureIndex,将导致它立即索引其中的所有内容,并且可能会阻塞 这里有一个关于索引建议的完
> db.posts.ensureIndex({location:"2d"})
即使发布了新条目,数据库也会被索引吗?还是在每次新输入后都需要输入此命令
索引是否对2000多个条目的数据库也有很大影响?一旦索引到位,它将始终用于任何后续读取和写入。您不需要继续执行该命令 请记住,对现有的大型数据集发出
ensureIndex
,将导致它立即索引其中的所有内容,并且可能会阻塞
这里有一个关于索引建议的完整官方常见问题解答:您应该创建与正在执行的查询类型相匹配的索引。而且,它非常容易使用
解释并查看查询需要多长时间。当您看到自己在反复执行特定类型的查询时,可以对其进行适当的索引以提高性能
MongoDB包含一个explain命令,用于确定查询的方式
正在处理中,尤其是他们是否正在使用
指数explain可以从驱动程序的列表中使用,也可以从
外壳:
db.comments.find({tags:'mongodb'}).sort({created_at:-1
}).explain()代码>
这将返回许多有用的信息,包括
扫描的项目数,查询在中处理所需的时间
毫秒,它为查询优化器尝试的索引和
最终使用
还是在每次新输入后都需要输入此命令
否。数据库中的条目更新时,索引也会更新
对于一个包含2000多个条目的数据库,索引是否也会产生很大的影响
说起来不容易。这取决于您正在运行的查询以及MongoDB内存中有多少数据
如果您的查询最终加载了2000个条目中的大部分,那么索引可能不会有多大作用。如果您的查询只加载一个条目,那么索引可能很有用。MongoDB中的索引工作原理与其他关系数据库服务器(SQLServer、MySQL等)中的索引非常相似,并且具有相同的优缺点:
- 索引可以显著加快读取速度
- 索引可能会降低写入速度(写入操作必须同时更新数据和保存索引信息的btree)
若您的应用程序读起来很重,那个么在适当的索引中,您将看到DB响应时间的显著改进。遵循jdi在他的帖子中所说的,这是一个很好的起点。嗨,jdi,谢谢你的回答,现在更清楚了。我想知道的另一件事是改变索引的可能性。我的意思是删除一个属性并索引另一个。是的。有一个用于删除和索引的命令。然后你就创建一个新的。这一切都在文档中: