我的毕设是做一个电商系统,主要是拿MongoDB来生成报表,也就是说MongoDB对这个系统的功能主要是用来查询测试环境:操作系统:CentOS release 6.3 (Final)CPU:Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz内存:1GRAM:95GMySQL版本:mysql-5.6.12-linux-glibc2.5-x86_64.tarMongoDB版本:mongodb-linux-x86_64-2.4.12上面这个是我的测试环境我在数据量分别为100W、200W、300W、400W和500W的时候对MongoDB和MySQL做查询测试,查的表叫user的用户表MongoDB的统计查询语句是db.user.find().count();MySQL的统计查询语句是select count(*) from user;当仅仅是做无条件统计查询, 100万 200万 300万 400万 500万MySQL 1.12 2.13 3.34 4.59 5.82MongoDB 0.0042 0.0064 0.0112 0.0154 0.0194MongoDB的查询时间快的惊人,MySQL的查询时间是MongoDB的两个数量级可是当我加上条件的时候,比方根据一段时间来查询,查的还是用户表user,reg_time是里面的一个叫注册时间的字段,查询从03年到06年总共注册了多少用户MongoDB条件查询语句db.user.find({"reg_time":{"$gte":"2003-1-1","$lte":"2006-12-30"}})MySQL条件查询语句select count(*) from user where reg_time between '2003-1-1' and '2006-12-30'; 100万 200万 300万 400万 500万MySQL 2.33 3.23 4.13 5.35 5.82MongoDB 1.7146 2.1256 2.6646 3.2614 6.46结果MongoDB的时间明显没有统计查询的那么好,想请问下是什么原因,另外两个数据库的表都没有做索引
db.user.find().count(); ==> 这个快是因为 _id作为主键是一个相对小的索引而对应的mysql里是走的全表扫描如果你设计的表结构很满足范式,那么其实并不是MongoDB所擅长的场景,你不会觉得mongodb有多快dbdao.com it在线教育