2321212dd 发表于 2016-11-28 09:25:51

MongoDB-index

索引:特殊的数据结构,存储表的数据的一小部分以实现快速查询优点:    1、大大减少了服务器需要扫描的数据量    2、索引可以帮助服务器避免排序或使用临时表    3、索引可以将随机io转换为顺序io
索引评估:三星(非常好)一星:索引如果能将相关的记录放置到一起二星:索引中数据的存储顺序与查找标准中顺序一致三星:如果索引中包含查询中所需要的全部数据:(覆盖索引)

DBA书:关系型数据库索引设计与优化
索引类别:    顺序索引    散列索引:将索引映射至散列桶上,映射是通过散列函数进行的
评估索引的标准:    访问类型:做等值比较用散列索引,用范围比较时用顺序索引
    访问时间:    插入时长:    删除时长:    空间开销:
顺序索引:    聚集索引:如果某记录文件中的记录顺序是按照对应的搜索码指定的顺序排序,聚集索引页成为主索引
    非聚集索引:搜索码中的指定的次序与记录文件中的记录次序不一致
    有聚集索引的数据文件,也叫做索引顺序文件
    根据索引中是否为每个记录相应的创建索引项,可分为稠密索引和稀疏索引
多级索引:(但对频繁修改的数据,性能很差)    辅助索引必须是稠密索引
B+树索引:顺序索引
    Balance Tree:平衡树索引
顺序索引的特性:    全值匹配:Name='user12'    匹配最左前缀:Name LIKE'User1%',无效:Name LIKE '%User1%'    匹配列前缀:Name LIKE'User1%',无效:Name LIKE '%User1%'    匹配范围值    精确匹配某一列并范围匹配另外一列:    只访问索引的查询
散列索引:    散列函数:      分布随机      分布均匀适用场景:    精确匹配:=,IN(),<=>

Mysql:全文索引,fulltext    sphinx,lucene    空间索引:必须使用空间索引函数获取相应的查询结果    主键、唯一键
Mysql:创建索引    create index index_name on table (col1,...)    alter table add index
    alter table drop index
    drop index index_name from table    show indexes from table
Mongodb创建索引:    id字段就有主索引在Name创建索引:

查看所有:默认在id上创建了主索引唯一索引:db.collection.ensureIndex({"user_id":1},{unique:true})sparse index:稀疏索引
db.collection.ensureIndex({"user_id":1},{sparse:true})
Mongodb:索引可以创建在collection上,也可以创建在子文档中
Mongodb索引类型:    单键索引    组合索引    多键索引:    空间索引    文本索引    hash索引hash索引:
删除索引:或者db.mycoll.dropIndexes():删除mycoll的所有索引查询过程:explain
扫描了100个数据创建索引后,只扫描一个数据指定索引:创建组合索引:通过组合索引查询:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
> db.testcoll.find({Name:'User19'}).hint({Name:1,Age:1}).explain()
{
    "cursor" : "BtreeCursor Name_1_Age_1",
    "isMultiKey" : false,
    "n" : 1,
    "nscannedObjects" : 1,
    "nscanned" : 1,
    "nscannedObjectsAllPlans" : 1,
    "nscannedAllPlans" : 1,
    "scanAndOrder" : false,
    "indexOnly" : false,
    "nYields" : 0,
    "nChunkSkips" : 0,
    "millis" : 0,
    "indexBounds" : {
      "Name" : [
            [
                "User19",
                "User19"
            ]
      ],
      "Age" : [
            [
                {
                  "$minElement" : 1
                },
                {
                  "$maxElement" : 1
                }
            ]
      ]
    },
    "server" : "stu:27017"
}



页: [1]
查看完整版本: MongoDB-index