mysql - 請問這條sql如何加索引優(yōu)化?
問題描述
請問這條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ù)。具體場景就不說明了。這條sql對現(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. angular.js - angularjs的自定義過濾器如何給文字加顏色?2. angular.js - angular內(nèi)容過長展開收起效果3. 關(guān)于docker下的nginx壓力測試4. docker鏡像push報(bào)錯(cuò)5. 關(guān)于nginx location配置的問題,root到底是什么6. linux - openSUSE 上,如何使用 QQ?7. 并發(fā)模型 - python將進(jìn)程池放在裝飾器里為什么不生效也沒報(bào)錯(cuò)8. 大家好,請問在python腳本中怎么用virtualenv激活指定的環(huán)境?9. python的前景到底有大?如果不考慮數(shù)據(jù)挖掘,機(jī)器學(xué)習(xí)這塊?10. linux - 升級(jí)到Python3.6后GDB無法正常運(yùn)行?
