我是mongoose和mangodb的新手。最近,我注意到我的GCP计算引擎示例(Ubuntu)有时会以100%的CPU负载运行。当我运行htop
命令时,mongod.conf
总是在列表的顶部。我猜这是因为我在Mongoose模式中没有使用任何索引。有人能给予我澄清一下以下问题吗?
1.如果使用具有多个筛选器的查询,是否应该为所有查询字段添加索引?(使用的查询字段超过8个)
1.查询筛选器的顺序是否会影响性能?
1.如果向mongoose模式添加索引,是否会为现有文档构建索引?
1.我应该为排序字段(如updatedAt
或createdAt
)添加索引吗?
1.是否有必要对字段少于4个的文档使用索引?
1.如何找出哪个查询花费了太多时间?
谢谢
1条答案
按热度按时间k10s72fa1#
1.=〉NO(使用compound index来合并多个字段进行过滤,如果它在查询中多次使用。只使用重要字段进行索引)
1.=〉YES(如果您先添加索引字段,速度会更快)
1.=〉否(您需要手动执行命令
db.collectionName.createIndex({ fieldName: 1 })
或使用MongoDB Compass创建索引)1.=〉否
1.=〉取决于IT,如果此查询需要执行多次,则可以创建Single Field Index,否则不需要
1.=〉使用MongoDB Compass、解释计划选项卡检查查询性能