2

やあ!簡単な質問をしたいだけです。次のようなテーブルがある場合

  • ユーザー
  • グループ
  • また、クロステーブルuser_groupは、ユーザーが複数のグループに属することができ、グループに複数のユーザーを含めることができるためです。

「友達」を取得したいのですが、どちらのクエリが高速ですか?

SELECT DISTINCT UG1.user_id
           FROM user_group AS UG1
          WHERE UG1.group_id IN ( SELECT UG2.group_id
                                    FROM user_group UG2
                                   WHERE UG2.user_id = 87 )

SELECT DISTINCT UG1.user_id
           FROM user_group UG1
           JOIN user_group UG2 ON UG1.group_id = UG2.group_id
          WHERE UG2.user_id = 87

答えがデータベース固有の場合、どのデータベースでどちらの方法が高速ですか?

4

1 に答える 1

3

簡単な答え:それぞれの実行計画を引き出して見てください

長い答え:それは多くのものに依存します-インデックス、テーブル統計、オプティマイザーアルゴリズム、キャッシング、物理アーキテクチャ、データベースサイズなど

于 2013-02-26T12:43:54.370 に答える