###前提・実現したいこと
ORDER BYをつけると激遅になります。
これを解決する方法はありませんか?
今のテーブルは500万行ですが、今後も増え続けます。
SQL
1SELECT 2 accounts.id, 3 COUNT(CASE accounts.item WHEN 1 THEN 1 END) as count1, 4 COUNT(CASE accounts.item WHEN 2 THEN 1 END) as count2 5FROM 6 accounts 7GROUP BY 8 accounts.id 9LIMIT 10000; 10-- Duration for 1 query: 0.063 sec. (+ 1.078 sec. network)
SQL
1SELECT 2 accounts.id, 3 COUNT(CASE accounts.item WHEN 1 THEN 1 END) as count1, 4 COUNT(CASE accounts.item WHEN 2 THEN 1 END) as count2 5FROM 6 accounts 7GROUP BY 8 accounts.id 9ORDER BY 10 count1, 11 count2 12LIMIT 10000; 13-- Duration for 1 query: 40.610 sec. (+ 0.078 sec. network)
###補足情報(言語/FW/ツール等のバージョンなど)
- MariaDBのバージョン
Ver 15.1 Distrib 10.1.11-MariaDB, for Linux (x86_64) using readline 5.1
- テーブルのインデックス
accounts.id
とaccounts.item
にINDEXはついています。
それぞれ単独でのキーをつけています。
- 実行計画(EXPLAINの結果)
- 複合キーを付けた場合(2016/05/17 14:02追記)
id, itemの順に複合キーをつけた場合早くなりました。
Duration for 1 query: 6.688 sec. (+ 1.406 sec. network)
しかし、1秒台ぐらいには抑えたいと思っております。
回答6件
あなたの回答
tips
プレビュー