假设我在 mongo 数据库中有一个包含以下文档的集合
{
"name" : "abc",
"email": "abc@xyz.com",
"phone" : "+91 1234567890"
}
该集合有很多对象(一百万左右),我的应用程序除了定期向该集合添加对象外,还对这些数据进行了几种不同类型的查找。
一种方法使用所有三个属性(姓名、电子邮件和电话)进行查找,因此我可以为这三个字段创建一个复合索引,以确保此查找有效。
db.mycollection.ensureIndex({name:1,email:1,phone:1})
现在,我的应用程序中还有一些方法可以获取所有具有相同名称的对象(我知道这是个坏例子)。所以我需要一个名称字段的索引。
db.mycollection.ensureIndex({name:1})
渐渐地,我的应用程序增长到必须索引其他字段的地步。
现在,我的问题。如果我将每个属性单独编入索引,那么为所有三个属性(或两个属性)维护复合索引是否仍然有意义?
显然,这是一个不好的例子......如果我正在制作一个集合来存储一个人的多个联系信息,我会使用数组。但是,这个问题纯粹是关于索引的。