記一次mongodb聚合查詢
一、慢查詢
db.public_setting_detail.aggregate([
}, }
},"isdir": 1,
"status": 1
}}, ,
"createtime":
}}],)
執行分析結果
// 1
, "fields": ,
"queryplanner": ,
"winningplan": ,
"direction": "forward"
},"rejectedplans": [ ]}}
},},}},
"isdir": 1,
"status": 1}},
,"createtime": }}
],"ok": 1,
"$glestats":
}
很明顯,上述執行結果中,我們看到 為全表掃瞄了
為什麼呢?其實和聚合的查詢順序是有關係的
db.public_setting_detail.aggregate([}},
"isdir": 1,
"status": 1
}}, },,
"createtime":
}}],)
調整match與project順序,先執行索引查詢,在執行對應的聚合操作
二、優化後查詢
db.public_setting_detail.aggregate([}},
"isdir": 1,
"status": 1
}},}, ,
"createtime":
}}],)
執行分析結果
// 1}},
"isdir": 1,
"status": 1
},"fields": ,
"queryplanner": }}
},},
},},}]
},"winningplan": }}
},"inputstage": ,
"indexname": "idx_public_setting_detail__creator_publicstatus_publicobject_isdir_status",
"ismultikey": true,
"direction": "forward",
"indexbounds": }}
},"rejectedplans": [ ]}}
},},
,"createtime": }}
],"ok": 1,
"$glestats":
}
記一次Innodb慢查詢分析過程
結論區分度低的索引到底會帶來哪方面的影響?資料量約700w create table order orderid varchar 32 not null comment 訂單編號 type char 1 default 0 comment 訂單型別 0 流量訂單,1 話費訂單 caller varc...
記一次慢查詢引發的事故
首先,測試環境上線新版本,並且通過黑盒測試以及功能測試。然後,我們就上線了新的版本。但是在執行3天後,整個伺服器大部分介面都失效了,基本上都是timeout。檢查伺服器情況 cpu基本上佔滿了。接著查了資料庫狀態,通過mysql命令show processlist 存在大量的waiting for ...
記一次sql查詢
效果圖 要查詢出如上圖的效果 知識點.1.多表巢狀查詢.2.輸出查詢結果,group concat函式 3.關聯查詢 select t1.學校,case when t1.年級 2017 then 1年級 when t1.年級 2016 then 2年級 when t1.年級 2015 then 3年...