(這個問題是爲了自學)。分組依據與加入哪一個需要更長的時間?
我有兩個表。
A - 含有以下的表:用戶,錢
乙 - 包含下列的表:用戶,數
錢用戶花費 數金額是多少用戶購買的商品
A比B略大,A包含B包含的所有用戶,而B缺少A的某些用戶,但A也不比B大得多,如1.1〜1.2倍於B的尺寸。
我想創建包含以下3列的表格:用戶,金錢,號碼
如果用戶不在表B中,那麼我們只使用0作爲數字。
有兩種方法可以做到這一點。
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的大小來計算它?在B(user)
或B(user, number)
這應該是你想要做什麼的最快方法
Select A.user, A.money,
coalesce(B.number, 0) as number
from A left join
B
on A.user = B.user;
隨着指數:
不確定,但我認爲這歸結於執行查詢在這裏。你不僅要做分組,還要做一個聯盟。我認爲集團還必須先完成查詢以比較結果。而加入的速度要快得多。爲什麼我不能詳細告訴你 –