Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB副本集集群中的索引_Mongodb_Mongodb Query_Replicaset - Fatal编程技术网

MongoDB副本集集群中的索引

MongoDB副本集集群中的索引,mongodb,mongodb-query,replicaset,Mongodb,Mongodb Query,Replicaset,在我的副本集mongodb集群中,可能会发生读取查询: - either on column1 - or on column2 - or on combination of column1 and column2 - or on combination of column1 and column3 - or on combination of column2 and column3 - or on combination of column1 and column2 and column3 为

在我的
副本集mongodb集群中
,可能会发生
读取
查询:

- either on column1
- or on column2
- or on combination of column1 and column2
- or on combination of column1 and column3
- or on combination of column2 and column3
- or on combination of column1 and column2 and column3

为上述每种情况创建6个索引是否有意义,或者是否有一种有效的方法将这些索引合并到较少的索引下?

{column1:1,column2:1,column3:1}
上的索引可以为以下查询提供服务:

  • 专栏1
  • 第1栏和第2栏
  • 第1栏、第2栏和第3栏
{column2:1,column3:1}
上的索引可以为以下查询提供服务:

  • 专栏2
  • 第2栏和第3栏
{column3:1,column1:1}
上的索引可以为以下查询提供服务:

  • 第3栏
  • 第3栏和第1栏
使用3个复合索引可以正确处理您所有的查询


如果确实需要创建大量索引,请注意mongod对每个集合的索引限制为64个。

{column1:1,column2:1,column3:1}
上的索引可以为以下查询提供服务:

  • 专栏1
  • 第1栏和第2栏
  • 第1栏、第2栏和第3栏
{column2:1,column3:1}
上的索引可以为以下查询提供服务:

  • 专栏2
  • 第2栏和第3栏
{column3:1,column1:1}
上的索引可以为以下查询提供服务:

  • 第3栏
  • 第3栏和第1栏
使用3个复合索引可以正确处理您所有的查询


如果确实需要创建大量索引,请注意mongod限制每个集合有64个索引。

创建三个索引,每个字段一个索引。Mongo能够组合多个索引,请参阅


验证性能并查看执行计划(使用
explain()

创建三个索引,每个字段一个索引。Mongo能够组合多个索引,请参阅


验证性能并查看执行计划(使用
explain()

创建如此多的索引可能会影响服务器上的写入性能。您可以利用来设计索引和查询。复合索引的作用是“and”或“or”?我认为,如果我创建一个包含column1和column3的复合索引,那么仅对column1进行查询可能无法利用此索引。可以有多个复合索引。另外,请参阅中的主题,如创建确保选择性的查询。您可能需要做出一些妥协,并与设计一起工作。这将是一个“反复试验”的过程。创建这么多索引可能会影响服务器上的写入性能。您可以利用来设计索引和查询。复合索引的作用是“and”或“or”?我认为,如果我创建一个包含column1和column3的复合索引,那么仅对column1进行查询可能无法利用此索引。可以有多个复合索引。另外,请参阅中的主题,如创建确保选择性的查询。您可能需要做出一些妥协,并与设计一起工作。这将是一个“尝试和错误”的过程。对这些使用哈希索引会有帮助吗?它是一个副本集群集。不,哈希索引只对切分键字段有意义。对这些字段使用哈希索引会有帮助吗?它是一个副本集群集。不,哈希索引只对切分键字段有意义。