我試圖優化以下查詢:爲VAR1 IN(1,2,...)GROUP BY(VAR2)ORDER BY SUM(VAR3)LIMIT適當的指數X
SELECT name
FROM tbl
WHERE user_id
IN (".$user_ids.")
GROUP BY name ORDER BY SUM(counter) DESC LIMIT 10
TBL信息: name是VARCHAR,counter和user_id是INT。 user_id,名稱是唯一的。
我試過添加IDX(user_id, counter, name)
,但在EXPLAIN
我仍然看到Using where; Using index; Using temporary; Using filesort
,所以我想我做錯了什麼。
這樣的查詢的正確索引是什麼?
您可以嘗試索引'tbl(user_id,name,count)',但是MySQL可能仍然會選擇爲'group by'進行文件排序。 –
@GordonLinoff兩者看起來都差不多(這太慢了)。奇怪的是沒有'USE INDEX',他使用'tbl(name)',這表現更糟糕。還有什麼我可以做的嗎? – Noam
你能爲我們提供一個創建表結構嗎? –