私はSQLのクエリを作成しましたが、それは本当に重く、それを最適化する方法が本当にわかりません。説明は次のとおりです。
SELECT tyds.user_tyd,
tyds.product_tyd,
tyds.action_tyd,
products.price_product,
data_8,
data_9,
avg_8,
sum_9
FROM tyds
INNER JOIN products
ON tyds.product_tyd = products.id_product
INNER JOIN (SELECT product_tyd,
Avg(data_tyd) AS avg_8
FROM tyds
WHERE action_tyd = 8
GROUP BY product_tyd) Agg_1
ON Agg_1.product_tyd = tyds.product_tyd
INNER JOIN (SELECT product_tyd,
Sum(data_tyd) AS sum_9
FROM tyds
WHERE action_tyd = 9
GROUP BY product_tyd) Agg_2
ON Agg_2.product_tyd = tyds.product_tyd
INNER JOIN (SELECT product_tyd,
data_tyd AS data_8
FROM tyds
WHERE user_tyd = 3
AND action_tyd = 8) Agg_3
ON Agg_3.product_tyd = tyds.product_tyd
INNER JOIN (SELECT product_tyd,
data_tyd AS data_9
FROM tyds
WHERE user_tyd = 3
AND action_tyd = 9) Agg_4
ON Agg_4.product_tyd = tyds.product_tyd
WHERE tyds.user_tyd = 3
AND tyds.action_tyd = 1
GROUP BY tyds.product_tyd
多くのものを取得する必要があるため、このすべての結合:tyds.user_tyd = 3 tyds.action_tyd = 1でid_userを定義します。これは、前のid_userをtyds.action_tyd=1としてtyds.product_tydでグループ化するためです。
次に、必要なもの:-data_8はtyds.data_tydの値です。WHEREuser_tyd = 3 AND action_tyd =8-data_9と同じです。
-AVGとCOUNTの場合、tyds.user_tyd条件をスキップし、id_productでのみグループ化します。
実際、このクエリは機能していますが、非常に重く、SELECTが多すぎると思います...
1か月前に同様の質問をしましたが、アーキテクチャを確認する必要があったため、申し訳ありません...
どうもありがとう。
e1:MySQLを使用しています