mongodb的ObjectId做相等判断很耗时间,有没有更快的方法?
发布于 5 年前 作者 ytcgk 2817 次浏览 来自 问答

我有个统计分析的业务,需要进行百万次级别的判断两个ObjectId是否相等的操作,发现特别耗时。 我开始用project._id.toString()==incomes[i].projectid.toString()这种方法判断,一百万次判断要耗时13秒左右, 后来改成project._id.equals(incomes[i].projectid)这种方法,耗时也没有明显提升,依然是12~13秒, 最后试了JSON.stringify(project._id)==JSON.stringify(incomes[i].projectid)这种方法,耗时更多,要16秒多。

不知道有没有更快的判断方法?

6 回复

自定义主键,替换掉objectId,用自增长id,或其他方式的,也可以看下objectId对象的源码,

来自酷炫的 CNodeMD

一百万次判断要耗时13秒

没办法优化一百万次,只能优化判断?

@hyifeng 对,次数没法优化

使用md5判断呢

还有就是优化次数 将业务分散 当天只能显示昨天以前的 用定时任务去统计放到另一个统计结果专用的表里 这样就好了

我觉得是X-Y Problem了,建议把描述一下上级问题

回到顶部