group by が異なるテーブルの 2 つ以上の列でグループ化されている場合、一時テーブルが作成されないようにインデックスを作成することは可能ですか?
例:
SELECT T1.c1, T2.c2, COUNT(*)
FROM T1
JOIN T2 USING (pk)
WHERE
T1.c3 = 100
GROUP BY T1.c1, T2.c2
一時テーブルが作成されないように使用できるインデックスの組み合わせは何ですか?
group by が異なるテーブルの 2 つ以上の列でグループ化されている場合、一時テーブルが作成されないようにインデックスを作成することは可能ですか?
例:
SELECT T1.c1, T2.c2, COUNT(*)
FROM T1
JOIN T2 USING (pk)
WHERE
T1.c3 = 100
GROUP BY T1.c1, T2.c2
一時テーブルが作成されないように使用できるインデックスの組み合わせは何ですか?
いいえ、最初のリストの最初のポイントにある説明を読んでください。このクエリで使用できる唯一のインデックスは、T1.c3
列にある可能性があります。両方のテーブルを結合してビューを作成し、それを明示的にグループ化することで、一時テーブルを回避できます。