背景
众所周知,数据库建立索引后速度会有极大的提升.但前提是正确的建立索引,否则数据库查询就不会走索引,而导致慢查询,不仅影响当前服务的性能,甚至可能影响其他使用同一数据库的服务的性能.
而索引分为独立索引和组合索引.
独立索引(Single field index)
对单独字段建立索引,例如:
1 | { "name": 1 } |
1 表示升序索引,-1 表示降序索引
查询条件为单一条件时有效,当查询条件为多个条件组合时,不会一一匹配独立索引
独立索引的 sort 排序
对于独立索引来说,由于 MongoDB index 本身支持顺序查找,所以对于独立索引来说不管你是{ sort: 1}
还是{ sort: -1 }
都是一样的
组合索引(Compound index)
当查询条件为多个条件组合时,需要建立组合索引,例如:
1 | { |
组合索引中条件的顺序对索引的性能有至关重要的影响,比如索引 {userid:1, score:-1} 首先根据 userid 排序,然后再在每个 userid 中根据 score 排序。
使用组合索引需要满足 prefix 原则
Index prefix 是指组合索引字段的左前缀子集,考虑以下索引: