SQL問題(22/08/05)
自分の書いたコード
以下は参考にしたリンク
MySQL | データをグループ化する(GROUP BY句)
SQLで同一グループの中で最大/最小のレコードを取得する - Qiita
解答的にはok。
SELECT player_id, min(event_date) AS first_login FROM Activity GROUP BY player_id
でもパフォーマンスが悪いように感じる...
Runtime: 1289 ms, faster than 7.13% of MySQL online submissions for Game Play Analysis I. Memory Usage: 0B, less than 100.00% of MySQL online submissions for Game Play Analysis I.
この問題から学んだこと
DISTINCTは高速化につながる(?)
DISTINCTの使い方及び、GROUP BYとの違いについて | IT職種コラム
SQL distinctとgroup byの実行計画が全く同じなのに大きな速度差が出る | ポテパンスタイル
DISTINCT vs GROUP BY - BASEプロダクトチームブログ
上記が参考になりました。
DISTINCTは、重複を排除した結果を出力する場合に使用
GROUP BYは、重複を排除した結果に対して集計処理を行いたい場合に使用
といった感じに使うのが良さそうらしい。
ただ、joinする場合は状況によって distinct, exists, group by のどれが早いかはある程度の件数のテストデータを使ってレスポンスの違いを観察する必要があるらしい。
以上