第五节 索引
作用
增加查询速度
查询的种类很多,与之对应的索引的种类也很多
内容简介
- 索引的种类与使用
- 索引的匹配规则
- 如何建立合适的索引
- 索引建立的情况评估
索引的种类
- _id索引
- 单键索引
- 多建索引
- 符合索引
- 过期索引
_id索引
默认建立的索引
查询 findOne()
find && findOne()的区别
两者的用法是一样的,只是返回的不同
find()返回的符合条件的所有集合
findOne() 返回符合条件的第一个文档
在前端中find()返回的是一个数组,取用的时候用数组的形式 // data[i].name
findOne()返回的是一个对象 直接使用 data.name
单键索引
最普通的索引 不会自动创建
创建单键所以
增加一条数据并创建索引
db.config_collection.insert({x:1,y:2,z:3})
创建x索引
db.config_collection.createIndex({x:1})
查看索引 //一条自动创建 一条自己加的
查询 (增加了索引查询 比以前查询更快)
多键索引
复合索引
过期索引
- 过期索引:是在一段时间过后会被删除的索引
- 在索引过期后,响应的数据会被删除
- 这适合存储一些在一段时间之后会失效的数据比如用户的登录信息,存储日志
- 建立方法: db.config_collection.createIndex({time:1},{expireAfterSeconds:10}) //多了个参数expireAfterSeconds (秒数)
过期索引的限制
- 存储在过期索引字段的值必须是指定的时间类型(不能是时间戳 ,否则不仅可删除)
- 如果指定的是ISODate数组,则按照最小的时间进行删除
- 过期索引不能是符合索引
- 删除时间不是精确 (删除过程是由后台程序60s跑一次,而且删除也需要一些时间,所有存在误差)