CNode

mongodb的ObjectId做相等判断很耗时间,有没有更快的方法?

问答
Yytcgk发布于8 年前最后回复8 年前6 回复3873 浏览0 收藏

我有个统计分析的业务,需要进行百万次级别的判断两个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)

Z
zswnew#1·8 年前

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

来自酷炫的 CNodeMD

H
hyifeng#2·8 年前

一百万次判断要耗时13秒

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

P
phper-chen#4·8 年前

使用md5判断呢

P
phper-chen#5·8 年前

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

A
AnzerWall#6·8 年前

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

参与回复
登录后即可参与回复。登录