参考 > MongoDB CRUD操作 > MongoDB CRUD概念 > 查询优化 > 优化查询性能
对于常见的查询,请创建索引。如果查询搜索多个字段,请创建一个复合索引。扫描索引比扫描集合快得多。索引结构小于文档参考,并按顺序存储参考。
例
如果您有一个posts
包含博客文章的集合,并且您定期发出按author_name
字段排序的查询,则可以通过在author_name
字段上创建索引来优化查询
:
索引还可以提高对按给定字段进行常规排序的查询的效率。
例
如果您定期发出按timestamp
字段排序的查询
,则可以通过在timestamp
字段上创建索引来优化查询:
创建该索引:
优化此查询:
由于MongoDB可以按升序和降序读取索引,因此单键索引的方向无关紧要。
索引支持查询,更新操作以及聚合管道的某些阶段 。
在以下情况下,BinData
更有效地将类型为索引的键存储在索引中:
MongoDB 游标以多个文档为一组返回结果。如果知道所需结果的数量,则可以通过发出该limit()
方法来减少对网络资源的需求。
这通常与排序操作结合使用。例如,如果您只需要从查询到posts
集合的10个结果,则可以发出以下命令:
有关限制结果的更多信息,请参见 limit()
当您仅需要文档中字段的子集时,可以通过仅返回所需的字段来获得更好的性能:
例如,如果在查询中的posts
集合,你只需要timestamp
,title
,author
,和abstract
领域,你会发出以下命令:
有关使用投影的更多信息,请参见 要从查询返回的项目字段。