(この質問は自習用です)。これは時間がかかりますか?
私は2つのテーブルを持っています。
A - 次の列を含むテーブル:ユーザ、お金
B - 次の列を含むテーブル:ユーザ、数
お金は、ユーザが 数を過ごしたドル量が数でありますユーザーが購入したアイテムの数
AはBより少し大きいですが、AにはAが持つ一部のユーザーが見つからないが、Aは1.1〜1.2のようにBよりはるかに大きくありませんBの倍の倍数
私は、次の3つの列を含むテーブルを作成したいと考えています:user、money、number
ユーザーがテーブルBに存在しない場合は、数字として0を使用します。
2つの方法があります。
Select A.user, A.money, case when B.number is null then 0 else B.number end
as number from A left join B on A.user=B.user
Select user, max(money), max(number) from
((Select user, money, 0 as number from A)
union all (Select user, 0 as money, number from B))
group by user
どのクエリが時間とメモリの消費量が少ないかを把握する方法が不思議でした。テーブルAまたはテーブルBのサイズに基づいて計算する良い方法はありますか?
わかりませんが、ここではクエリの実行に至ると思います。あなたはグループバイをしているだけでなく、ユニオンをしています。 Group By私は、結果を比較するために最初にクエリを終了しなければならないと思います。一方で、これははるかに高速です。なぜ私は詳細を教えてくれなかったのですか –