業務で集計処理を書く予定があるのですが、サブクエリとLEFT JOIN
のどちらを使って集計した方が良いのかを判断できませんでした。もちろん、データ量やデータ特性、トレードオフなどを踏まえて判断する必要がありますが、今後、同じような場面に遭遇した際にデファクトスタンダートとなるのはどちらかなのかをハッキリとさせておきたいです。
世の中には「推測するな。計測せよ」という言葉があるので、実際にサブクエリとLEFT JOIN
でそれぞれ集計処理を計測してみました。
結果的に今回のパターンではLEFT JOIN
の方がパフォーマンスが良かったです。
では、詳しく紹介していきます。
テーブル定義
以下のようなテーブルがあったとします。
ユーザーはポストを任意の数だけ投稿できるように、中間テーブルuser_posts
を定義しています。