8. mongodb优化索引

创建时间:2023-02-07 04:12
长度:1021
浏览:44
评论:0

数据库索引是什么?

索引是一种排序好的便于快速查询的数据结构

作用:帮助数据库高效率的查询数据


索引的优缺点

优点:

   提高数据查询的效率,降低数据库的IO成本

   通过索引对数据进行排序,降低数据排序的成本,降低CPU的消耗

缺点:

   占用磁盘空间

   大量索引影响SQL语法效率,因为每次插入和修改数据都需要更新索引


创建索引

   db.集合名.createIndex(待创建索引的列名 [, 额外选项]);

   参数:

       待创建索引的列名: { 键: 1, 键: -1, .... }, 1升序 -1降序;例如:{ age: 1} 表示创建age索引并按照升序的方式存储

       额外选项:设置索引的名称或者唯一索引名称等等


删除索引

   全部删除:db.集合名.dropIndexes();

   删除指定:db.集合名.dropIndex(索引名)


查看索引:

   db.集合名.getIndexes();    


准备数据

use test5
for(var i = 0; i < 100000; i++) {
    db.c1.insert({ name: "aaa" + i, age: i})
}
db.c1.count();

练习1: 给name添加普通索引

   db.c1.createIndex({  name: 1 })


练习2: 删除name索引,再创建name索引并起名

db.c1.dropIndex("name_1"); // 通过db.c1.getIndexes();查看索引名然后删除

db.c1.createIndex({ name: -1}, { name: "MyName"})


练习3: 创建多个(组合)索引

   db.c1.createIndex({ name: 1, age: 1});


练习4: 创建唯一索引

db.c1.createIndex({ name: 1}, { unique: "name"});

作用是不能插入相同的字段值


分析索引

语法: db.集合名.find().explain("executionStats");

COLLSCAN 全表扫描

IXSCAN 索引扫描

FETCH 根据索引去检索指定数据


选择规则

如何选择合适的列创建索引

* 为常做条件、排序、分组的辽段建立索引

* 选择唯一性索引(同值较少如性别字段)

* 选择较小的数据列,为较长的字符串使用前缀索引(索引文件更小)


评论(共0条)
0/200



请写下你的评论