频道栏目
首页 > 资讯 > 其他 > 正文

最近遇到的一个MongoDB索引顺序的问题-我的二狗子呢-51CTO博客

20-05-14        来源:[db:作者]  
收藏   我要投稿

最近遇到个mongo慢查问题,查询这样子:

db.tb1.find({status:'normal',?lastReviewTime:{$gte:1583038740,$lte:1585285140}}).sort({createdTime:-1}).limit(30)

执行计划如下:

>?db.tb1.find({status:'normal',?lastReviewTime:{$gte:1583038740,$lte:1585285140}}).sort({createdTime:-1}).limit(30).explain()
{
????????"queryPlanner"?:?{
????????????????"plannerVersion"?:?1,
????????????????"namespace"?:?"db1.tb1",
????????????????"indexFilterSet"?:?false,
????????????????"parsedQuery"?:?{
????????????????????????"$and"?:?[
????????????????????????????????{
????????????????????????????????????????"status"?:?{
????????????????????????????????????????????????"$eq"?:?"normal"
????????????????????????????????????????}
????????????????????????????????},
????????????????????????????????{
????????????????????????????????????????"lastReviewTime"?:?{
????????????????????????????????????????????????"$lte"?:?1585285140
????????????????????????????????????????}
????????????????????????????????},
????????????????????????????????{
????????????????????????????????????????"lastReviewTime"?:?{
????????????????????????????????????????????????"$gte"?:?1583038740
????????????????????????????????????????}
????????????????????????????????}
????????????????????????]
????????????????},
????????????????"winningPlan"?:?{
????????????????????????"stage"?:?"SORT",
????????????????????????"sortPattern"?:?{
????????????????????????????????"createdTime"?:?-1
????????????????????????},
????????????????????????"limitAmount"?:?30,
????????????????????????"inputStage"?:?{
????????????????????????????????"stage"?:?"SORT_KEY_GENERATOR",
????????????????????????????????"inputStage"?:?{
????????????????????????????????????????"stage"?:?"FETCH",
????????????????????????????????????????"filter"?:?{
????????????????????????????????????????????????"$and"?:?[
????????????????????????????????????????????????????????{
????????????????????????????????????????????????????????????????"lastReviewTime"?:?{
????????????????????????????????????????????????????????????????????????"$lte"?:?1585285140
????????????????????????????????????????????????????????????????}
????????????????????????????????????????????????????????},
????????????????????????????????????????????????????????{
????????????????????????????????????????????????????????????????"lastReviewTime"?:?{
????????????????????????????????????????????????????????????????????????"$gte"?:?1583038740
????????????????????????????????????????????????????????????????}
????????????????????????????????????????????????????????}
????????????????????????????????????????????????]
????????????????????????????????????????},
????????????????????????????????????????"inputStage"?:?{
????????????????????????????????????????????????"stage"?:?"IXSCAN",
????????????????????????????????????????????????"keyPattern"?:?{
????????????????????????????????????????????????????????"status"?:?1,
????????????????????????????????????????????????????????"type"?:?1,
????????????????????????????????????????????????????????"executionTime"?:?1
????????????????????????????????????????????????},
????????????????????????????????????????????????"indexName"?:?"idx_stats_typ_execTime",???#?走的这个索引
????????????????????????????????????????????????"isMultiKey"?:?false,
????????????????????????????????????????????????"multiKeyPaths"?:?{
????????????????????????????????????????????????????????"status"?:?[?],
????????????????????????????????????????????????????????"type"?:?[?],
????????????????????????????????????????????????????????"executionTime"?:?[?]
????????????????????????????????????????????????},
????????????????????????????????????????????????"isUnique"?:?false,
????????????????????????????????????????????????"isSparse"?:?false,
????????????????????????????????????????????????"isPartial"?:?false,
????????????????????????????????????????????????"indexVersion"?:?2,
????????????????????????????????????????????????"direction"?:?"forward",
????????????????????????????????????????????????"indexBounds"?:?{
????????????????????????????????????????????????????????"status"?:?[
????????????????????????????????????????????????????????????????"[\"normal\",?\"normal\"]"
????????????????????????????????????????????????????????],
????????????????????????????????????????????????????????"type"?:?[
????????????????????????????????????????????????????????????????"[MinKey,?MaxKey]"
????????????????????????????????????????????????????????],
????????????????????????????????????????????????????????"executionTime"?:?[
????????????????????????????????????????????????????????????????"[MinKey,?MaxKey]"
????????????????????????????????????????????????????????]
????????????????????????????????????????????????}
????????????????????????????????????????}
????????????????????????????????}
????????????????????????}
????????????????},
????????????????"rejectedPlans"?:?[
????????????????????????{
????????????????????????????????"stage"?:?"SORT",
????????????????????????????????"sortPattern"?:?{
????????????????????????????????????????"createdTime"?:?-1
????????????????????????????????},
????????????????????????????????"limitAmount"?:?30,
????????????????????????????????"inputStage"?:?{
????????????????????????????????????????"stage"?:?"SORT_KEY_GENERATOR",
????????????????????????????????????????"inputStage"?:?{
????????????????????????????????????????????????"stage"?:?"FETCH",
????????????????????????????????????????????????"inputStage"?:?{
????????????????????????????????????????????????????????"stage"?:?"IXSCAN",
????????????????????????????????????????????????????????"keyPattern"?:?{
????????????????????????????????????????????????????????????????"lastReviewTime"?:?1,
????????????????????????????????????????????????????????????????"status"?:?1,
????????????????????????????????????????????????????????????????"createdTime"?:?-1
????????????????????????????????????????????????????????},
????????????????????????????????????????????????????????"indexName"?:?"lastReviewTime_1_status_1_createdTime_-1",
????????????????????????????????????????????????????????"isMultiKey"?:?false,
????????????????????????????????????????????????????????"multiKeyPaths"?:?{
????????????????????????????????????????????????????????????????"lastReviewTime"?:?[?],
????????????????????????????????????????????????????????????????"status"?:?[?],
????????????????????????????????????????????????????????????????"createdTime"?:?[?]
????????????????????????????????????????????????????????},
????????????????????????????????????????????????????????"isUnique"?:?false,
????????????????????????????????????????????????????????"isSparse"?:?false,
????????????????????????????????????????????????????????"isPartial"?:?false,
????????????????????????????????????????????????????????"indexVersion"?:?2,
????????????????????????????????????????????????????????"direction"?:?"forward",
????????????????????????????????????????????????????????"indexBounds"?:?{
????????????????????????????????????????????????????????????????"lastReviewTime"?:?[
????????????????????????????????????????????????????????????????????????"[1583038740.0,?1585285140.0]"
????????????????????????????????????????????????????????????????],
????????????????????????????????????????????????????????????????"status"?:?[
????????????????????????????????????????????????????????????????????????"[\"normal\",?\"normal\"]"
????????????????????????????????????????????????????????????????],
????????????????????????????????????????????????????????????????"createdTime"?:?[
????????????????????????????????????????????????????????????????????????"[MaxKey,?MinKey]"
????????????????????????????????????????????????????????????????]
????????????????????????????????????????????????????????}
????????????????????????????????????????????????}
????????????????????????????????????????}
????????????????????????????????}
????????????????????????},
????????????????????????{
????????????????????????????????"stage"?:?"SORT",
????????????????????????????????"sortPattern"?:?{
????????????????????????????????????????"createdTime"?:?-1
????????????????????????????????},
????????????????????????????????"limitAmount"?:?30,
????????????????????????????????"inputStage"?:?{
????????????????????????????????????????"stage"?:?"SORT_KEY_GENERATOR",
????????????????????????????????????????"inputStage"?:?{
????????????????????????????????????????????????"stage"?:?"FETCH",
????????????????????????????????????????????????"inputStage"?:?{
????????????????????????????????????????????????????????"stage"?:?"IXSCAN",
????????????????????????????????????????????????????????"keyPattern"?:?{
????????????????????????????????????????????????????????????????"lastReviewTime"?:?-1,
????????????????????????????????????????????????????????????????"status"?:?1
????????????????????????????????????????????????????????},
????????????????????????????????????????????????????????"indexName"?:?"lastReviewTime_-1_status_1",
????????????????????????????????????????????????????????"isMultiKey"?:?false,
????????????????????????????????????????????????????????"multiKeyPaths"?:?{
????????????????????????????????????????????????????????????????"lastReviewTime"?:?[?],
????????????????????????????????????????????????????????????????"status"?:?[?]
????????????????????????????????????????????????????????},
????????????????????????????????????????????????????????"isUnique"?:?false,
????????????????????????????????????????????????????????"isSparse"?:?false,
????????????????????????????????????????????????????????"isPartial"?:?false,
????????????????????????????????????????????????????????"indexVersion"?:?2,
????????????????????????????????????????????????????????"direction"?:?"forward",
????????????????????????????????????????????????????????"indexBounds"?:?{
????????????????????????????????????????????????????????????????"lastReviewTime"?:?[
????????????????????????????????????????????????????????????????????????"[1585285140.0,?1583038740.0]"
????????????????????????????????????????????????????????????????],
????????????????????????????????????????????????????????????????"status"?:?[
????????????????????????????????????????????????????????????????????????"[\"normal\",?\"normal\"]"
????????????????????????????????????????????????????????????????]
????????????????????????????????????????????????????????}
????????????????????????????????????????????????}
????????????????????????????????????????}
????????????????????????????????}
????????????????????????}
????????????????]
????????},
????????"ok"?:?1
}

这种情况下,我们的索引顺序需要注意下,这样写:

{精确匹配字段,排序字段,范围查询字段} 这样的索引排序会更为高效

db.tb1.createIndex({status:1,createdTime:-1,lastReviewTime:1},{background:true})

加完索引后,可以发现查询速度有质的飞越了。

相关TAG标签
上一篇:(六)k8s 常用控制器development-dwl1988721的博客-51CTO博客
下一篇:httpd-JOE0504的博客-51CTO博客
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站