mysql - 請(qǐng)問這條sql如何加索引優(yōu)化?
問題描述
請(qǐng)問這條sql如何加索引優(yōu)化?
select userid,sum(coin) as total from jiuwo_gift.user_consume where time >= ’2016-11-07 20:47:27’ group by userid order by total desc limit 10;
說明:數(shù)據(jù)表始終只有一個(gè)月的數(shù)據(jù),每天會(huì)定時(shí)清除一個(gè)月之前的數(shù)據(jù)。具體場(chǎng)景就不說明了。這條sql對(duì)現(xiàn)在影響也不大,查詢的數(shù)據(jù)結(jié)果會(huì)放redis緩存,不是頻繁查詢,查詢耗時(shí)1s左右,只是想如何更好優(yōu)化這個(gè)sql.
問題解答
回答1:索引的話你需要在 排序和條件上加索引,但是你的total是sum出來的索引沒法加。。。。那你只能在time上加索引
回答2:userid 是主鍵把,單看這一句sql,只需要userid這個(gè)主鍵就可以了
給time加索引運(yùn)行的時(shí)候浪費(fèi)內(nèi)存,感覺利大于弊
coin使用了函數(shù),加索引沒意義
回答3:從性能角度看,應(yīng)該創(chuàng)建一個(gè)索引,字段順序?yàn)閠ime,userid,coin這樣數(shù)據(jù)庫僅從索引盡可以執(zhí)行這個(gè)sql語句
另外,建議附上執(zhí)行計(jì)劃,以及表的總數(shù)量、每天數(shù)據(jù)量等數(shù)據(jù),方便其他人進(jìn)行分析。
相關(guān)文章:
1. 淺談vue生命周期共有幾個(gè)階段?分別是什么?2. macos - mac下docker如何設(shè)置代理3. vue添加錨點(diǎn),實(shí)現(xiàn)滾動(dòng)頁面時(shí)錨點(diǎn)添加相應(yīng)的class操作4. index.php錯(cuò)誤,求指點(diǎn)5. css3 - 這個(gè)右下角折角用css怎么畫出來?6. html5 - 一個(gè)用vue組件實(shí)現(xiàn)功能的問題7. javascript - js正則匹配小括號(hào)中的內(nèi)容8. javascript - 想在編寫weex應(yīng)用的時(shí)候使用rxjs,如何進(jìn)行相關(guān)配置呢?9. javascript - 調(diào)微信分享朋友接口,出現(xiàn)下面問題,求解答,10. javascript - 微信小程序封裝定位問題(封裝異步并可能多次請(qǐng)求)
