10万记录,MongoDB 的查询效率竟然还不如 SQLServer

wkk522 2013-09-09 05:02:39
今天做了一个实验,用一个业务对象分别在 SQL Server 建立对应的表、在 MongoDB 中建立相应的 Collection,字段类型和个数完全一样。分别测试了2个场景——插入和查询,结果如下;

1. 在插入10万笔数据时,MongoDB 比 SQL Server 快10倍;(很符合预期)
2. 在对一个整形字段进行查询时,SQL Server 比 MongoDB 快 2 - 3 倍
(出乎意料之外啊,SQL Server中未做任何索引,甚至连主键都没有建立,而 MongoDB 中针对查询字段做了索引)

SQL Server 和 MongoDB 都安装在同一台虚拟机服务器上。

有没有哪位大侠能解释一下,为什么 MongoDB 的查询效率会比 SQL Server 还差劲呢?
...全文
11529 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
giantsSrecretariat 2014-07-26
  • 打赏
  • 举报
回复
引用 5 楼 Austin_yudao 的回复:
确实,建议采用留上的方法,增加1亿条记录测试一下,效果会非同凡响!
上亿级别的数据在复杂查询方面性能应该不会很好吧!
giantsSrecretariat 2014-07-26
  • 打赏
  • 举报
回复
引用 7 楼 Net_Java_dram 的回复:
[quote=引用 4 楼 East271536394 的回复:] 1. save你是批量的么~ 2. 查询你使用了索引了么~ 你才10w 数据,不至于吧!我们使用mongodb 数据量都在3+亿数据。
3+亿数据,只做简单查询,应该没问题,你要加上Group Sum 之类的统计查询,应该很慢, 我觉得Mongodb 在做保存 和简单查询 效率还是很好的,在统计上不如Sql。[/quote] 对 我也觉得在复杂的查询方面很耗时!
giantsSrecretariat 2014-07-26
  • 打赏
  • 举报
回复
引用 4 楼 East271536394 的回复:
1. save你是批量的么~ 2. 查询你使用了索引了么~ 你才10w 数据,不至于吧!我们使用mongodb 数据量都在3+亿数据。
存储应该没问题,但是稍微复杂的查询就很耗时了吧!!
DrSmart 2014-07-25
  • 打赏
  • 举报
回复
mongodb性能很大情况由内存决定的
bbsggy 2014-07-24
  • 打赏
  • 举报
回复
不过mongoDB的写入速度还是很强大的,一千万的数量级 继续写入 1000条数据 测试三次 mongoDB的InsertBatch方式 耗时:303 毫秒 54毫秒 60毫秒 foreach {mongoDB的Insert }方式 耗时:480 毫秒 540毫秒 572毫秒 SQL的entity方式 foreach 写入 耗时3090毫秒 3754毫秒 2654毫秒 SQL的entity 方式的 批量一次性savechange 耗时1495毫秒 1368毫秒 1441毫秒 最终: mongoDB的批量写入第一次303毫秒 之后一直保持60毫秒上下 mongoDB的循环单条写入一直保持550毫秒上下 SQL的循环单条写入一直保持在2-4秒之间 SQL的批量写入一直保持在1.5秒左右
bbsggy 2014-07-24
  • 打赏
  • 举报
回复
我也做了一个测试 同样的数据量,两个数据库的数据是同步了得,只有主键ID不一样,sql使用的GUID做主键 MongoDB使用的ObjectId做主键, 被查询字段均为加索引 int 类型 SQL比MongoDB查询快很多,还有一个分组查询的group,mongoDB查询性能更差.
DrSmart 2014-07-20
  • 打赏
  • 举报
回复
绝对是没有加索引问题
iichuang 2014-06-07
  • 打赏
  • 举报
回复
上亿的数据是分布式的吧,,,, 10w是不是单机的? 这个和部署方式也有关系的吧
xuyanlu 2014-06-06
  • 打赏
  • 举报
回复
十万的数据量真的很小了,结果测试意义不大~
robot1105 2014-05-24
  • 打赏
  • 举报
回复
1亿条数据?回头我也试试
  • 打赏
  • 举报
回复
环境是什么,怎么比对的?
有爱的小止 2014-03-24
  • 打赏
  • 举报
回复
索引及数据库设计思路
黄瓜黄瓜 2013-10-08
  • 打赏
  • 举报
回复
引用 4 楼 East271536394 的回复:
1. save你是批量的么~ 2. 查询你使用了索引了么~ 你才10w 数据,不至于吧!我们使用mongodb 数据量都在3+亿数据。
3+亿数据,只做简单查询,应该没问题,你要加上Group Sum 之类的统计查询,应该很慢, 我觉得Mongodb 在做保存 和简单查询 效率还是很好的,在统计上不如Sql。
Austin_yudao 2013-09-18
  • 打赏
  • 举报
回复
确实,建议采用留上的方法,增加1亿条记录测试一下,效果会非同凡响!
East271536394 2013-09-16
  • 打赏
  • 举报
回复
1. save你是批量的么~ 2. 查询你使用了索引了么~ 你才10w 数据,不至于吧!我们使用mongodb 数据量都在3+亿数据。
可乐罐 2013-09-12
  • 打赏
  • 举报
回复
才10W,用MongoDB???
rucypli 2013-09-10
  • 打赏
  • 举报
回复
那你把数据加到一千万试试 并发到一千试试
QuickPai 2013-09-10
  • 打赏
  • 举报
回复
首先,我想知道2中你是通过什么方法测试他们的查询效率的? 其次,对关系型数据库和非关系型数据库这样进行简单的效率查询(只有一个简单的对象或者说是collection)没有任何意义,比较之前,你应该在存储上面针对每种数据库的优势进行最优存储,然后再做查询,这样才可能会显示出他们的性能优劣。 下面这个官方文档或许对你有用: http://docs.mongodb.org/manual/data-modeling/

1,747

社区成员

发帖
与我相关
我的任务
社区描述
MongoDB相关内容讨论区
社区管理员
  • MongoDB社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧