gpt4 book ai didi

mongodb - 使用 MongoDB,需要选择哪些字段来构建索引?

转载 作者:可可西里 更新时间:2023-11-01 10:06:48 25 4
gpt4 key购买 nike

如果有一个查询在字段 a 和 b 上过滤然后在 c 上排序,我是否需要为 a、b 和 c 构建单独的索引,或者我应该构建一个复合索引 (a, b, C)?而且,查询中的序列是否应该与索引中的序列相匹配?也就是说如果query中的filter序列是filter b,filter c,然后在a上排序,那么复合索引(b, c, a)是不是更好?

最佳答案

由于 MongoDB 目前每个查询仅使用一个索引,因此您将需要一个复合索引。

索引参数的顺序确实很重要,尽管不一定按照您在问题中提到的方式。

由于过滤先发生,如果索引是 (c,b,a),它对过滤不是很有用,尤其是当集合中有很多项时。用于排序的字段应在索引中最后指定。

因此索引应该是 (a,b,c) 或 (b,a,c)。它应该是哪一个取决于选择性——换句话说,哪个字段会更快地消除不匹配的项目?

如果 b 有 10,000 个可能值,而 a 只有两个可能值,那么索引应该是 (b,a,c)。相反,如果 a 有更多可能的值,那么它可能应该是 (a,b,c)。如果这两个字段从查询中删除文档的能力大致相同,那么它就没有那么重要了。

关于mongodb - 使用 MongoDB,需要选择哪些字段来构建索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9090903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com