想看看到底是 整数类型的索引快呢,还是字符串类型的索引快,到底快多少呢?内存分别占多少呢?今天就来测试一下
配置
华硕飞行堡垒6
500G 的 SSD
准备数据
a 是 for 循环的变量
{
id:a,
name:'abcdefg'+a
}
2千万的数据
id 和 name 是for循环出来的
首先我们看一下查询全部数据所需要的时间
db.test1.find().explain('executionStats')
然后我等了10分钟… , 果断 ctrl + c 强制退出,不知道要等多久
查询id所需时间
db.test1.find({id:10000000}).explain('executionStats')
8 秒
查询name的时间
和 id 差不多,8秒多100毫秒
添加 id 索引后查询id
db.test1.createIndex({id:1})
db.test1.find({id:19000000}).explain('executionStats')
9毫秒
添加 name 索引后查询 name
db.test1.createIndex({name:1})
db.test1.find({name:'abcdefg19000000'}).explain('executionStats')
0毫秒
查看内存
2个索引 + 2千万数据
将近1G的内存 …
删除字符串索引后的内存
0.177 G
的字符串索引
内存
删除整数索引后的内存
0.205 G
的整数索引
内存
总结
字符串索引 √
- 速度:比整数型索引快
- 内存:比整数型索引小
最后
我的实验可能存在各种不定因素,也可能是因为我创建索引方式不正确,或者类型不正确,所以觉得有任何地方有错的小伙伴门,请在评论指正,谢谢~