在(zai)業務系統中,除了(le)使用主鍵進行的查詢(xun),其他(ta)的我(wo)都會在(zai)測試庫上測試其耗時,慢(man)查詢(xun)的統計主要由運維(wei)在(zai)做,會定期 將(jiang)業務中的慢(man)查詢(xun)反饋給(gei)我(wo)們。
慢查(cha)詢(xun)的優化首先要搞明白慢的原因是(shi)什么?
是(shi)查詢條件沒有命(ming)中索(suo)引(yin)?是(shi)load了(le)不(bu)需要的數(shu)據列?還是(shi)數(shu)據量太(tai)大? 所(suo)以優化(hua)也是(shi)針對這三個(ge)方向來(lai)的,
- 首先分析語句,看看是(shi)否load了(le)額(e)外的(de)(de)數據,可(ke)能是(shi)查詢了(le)多余(yu)的(de)(de)行并(bing)且(qie)拋棄掉了(le),可(ke)能是(shi)加(jia)載了(le)許多結果中(zhong)并(bing)不 需要的(de)(de)列,對(dui)語句進行分析以及重寫。
- 分析(xi)語句的(de)執行計劃,然后獲得(de)其使(shi)用索引的(de)情(qing)況,之(zhi)后修改(gai)語句或者(zhe)修改(gai)索引,使(shi)得(de)語句可以盡(jin)可能(neng)的(de)命(ming)中索引。
- 如果對語句的(de)優化已經無法(fa)進行(xing),可以(yi)考慮(lv)表中的(de)數據量是否(fou)太大(da),如果是的(de)話(hua)可以(yi)進行(xing)橫向或者縱向的(de)分表。