mongo的集合上创建完索引,查询效果惊呆我了("clickid:/^2733_.*$/i"表示忽略大小写)!
daylog("click",0,"clickid:/^2733_.*$/")
只扫描了3个结果就出来了!!
以前不用索引我真是惭愧!!
查找点击日志是最大量的工作,因为点击日志太大了。结果还没眨眼结果就出来了!
目前只在clickid创建了索引,所以一看活动id就知道要学会借道使用clickid(以活动id开头,后面是cid和ts,以"_"分隔开),于是找到了下面的正则表达式的查询!结果毫秒级,惊艳了!!
> daylog("click",0,"clickid:/^2733_.*$/").explain()
db.click_20170606.find({clickid:/^2733_.*$/}).sort({_id:-1})
{
"cursor" : "BtreeCursor clickid_1 multi",
"isMultiKey" : false,
"n" : 3,
"nscannedObjects" : 3,
"nscanned" : 4,
"nscannedObjectsAllPlans" : 10,
"nscannedAllPlans" : 11,
"scanAndOrder" : true,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 21,
"indexBounds" : {
"clickid" : [
[
"2733_",
"2733`"
],
[
/^2733_.*$/,
/^2733_.*$/
]
]
},
"server" : "mc-arch-mongo-ems-172-17-0-6:27017"
}
那么最后的问题:mongo shell查询是算最快了,mongoexport呢?它如何最快呢?