ユーザーのさまざまなトランザクションを格納する 4 つの異なるテーブルがあり、特定のユーザーのすべてのトランザクションを統合したいと考えています。しかし問題は、これら 4 つのテーブルすべてに膨大な量のデータがあるため、それらすべてを UNION してユーザーと JOIN しようとすると、計算に何時間もかかることです。私がやっていることは次のとおりです。
SELECT blablabla
FROM transactions1 t1
JOIN users ON (users.id = t1.user_id AND user.state = 1 AND user.friends > 1 AND user.loc = 'Turkey')
UNION
SELECT blablabla
FROM transactions2 t2
JOIN users ON (users.id = t2.user_id AND user.state = 1 AND user.friends > 1 AND user.loc = 'Turkey')
UNION
SELECT blablabla
FROM transactions3 t3
JOIN users ON (users.id = t3.user_id AND user.state = 1 AND user.friends > 1 AND user.loc = 'Turkey')
UNION
SELECT blablabla
FROM transactions4 t4
JOIN users ON (users.id = t4.user_id AND user.state = 1 AND user.friends > 1 AND user.loc = 'Turkey')
ORDER BY date DESC
問題は、
JOIN users ON (users.id = t1.user_id AND user.state = 1 AND user.friends > 1 AND user.loc = 'Turkey')
各トランザクション テーブルをユーザーと結合して、このフィルターを 4 回実行していることです。
ベスト プラクティスを実行してクエリの効率を高めるには、クエリをどのように改善すればよいですか?
ありがとう !