索引

索引的基本作用:搜索 + 排序

创建索引

1
db.test.ensureIndex({ a: 1, b: 1, c: 1});

查询索引

1
db.getCollection('test').getIndexes();

索引前缀

1
2
3
4
5
6
7
db.test.createIndex({ a: 1, b: 1, c: 1 })
以上所有的前缀包括:
{ a: 1 }
{ a: 1, b: 1 }
{ a: 1, b: 1, c: 1 }

过滤性

在1w条数据,满足

  • a = 100的记录有1000条
  • b = 10的记录有100条
  • c = 1的记录有5条

    要将过滤性强的条件放前面

    1
    { c: 1, b: 1, a: 1 }
  • 使用B-tree的数据结构存储

  • 建立索引的正确姿势:

    1. 精确匹配
    2. 排序条件
    3. 范围匹配(正则表达,in, gte, lte)