ユーザーと購入の 2 つの大きなテーブルがあります (それぞれ 10^6 行と 10^8 行)。以下のクエリを実行するために mySql を使用していますが、計算には時間がかかります。実行を高速化する最良の方法は何ですか? インデックスを使用するか、クエリを 2 つのクエリに分割する必要がありますか?
CREATE TABLE user(
uID INTEGER,
countryCode varchar(2)
);
CREATE TABLE purchases(
uID INTEGER,
productID INTEGER,
price INTEGER
);
SELECT U.countryCode AS country, SUM(P.price) AS amount
FROM user U, purchases P
WHERE U.uid = P.uid
GROUP BY U.countryCode
ORDER BY U.countryCode ASC;
問題は Type:All にあると思います。説明すると、次のようになります。
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE U ALL NULL NULL NULL NULL 9653 Using temporary; Using filesort
1 SIMPLE P ALL NULL NULL NULL NULL 97816 Using where; Using join buffer