代码之家  ›  专栏  ›  技术社区  ›  Manuel

什么时候建立索引有意义?

  •  1
  • Manuel  · 技术社区  · 6 年前

    什么时候在MongoDB中建立索引才有意义?

    mlab慢速查询分析器的示例:

    Log lines read
    8 hours of logs starting at 2019-02-14 12:25 (2019-02-14 11:25 UTC)
    
    find command
    {"myArray":{"$all":["<vals>"]},"myBoolean":{"$ne":"<val>"}}
    
    sort
    {"myDate":-1}
    
    total time (all occurrences)
    5 seconds, 127 milliseconds
    
    average time
    394 milliseconds
    
    query count
    13
    
    average documents / index keys examined
    50,000 / 50,000
    
    in-memory sort
    yes
    
    recommended index
    index: {"myDate": -1, "myArray": 1, "myBoolean": 1}
    

    一个性能不佳的查询,会遍历所有文档,甚至在内存中进行排序。但是查询在8小时内只发生了13次,总共花费了5秒的时间。

    当构建索引有意义时,参数和值是什么?例如,在构建索引之前,一个查询需要分析8小时日志中的多少时间?

    0 回复  |  直到 6 年前