假設我有兩個表:的Sql查詢,組關係
Group
(
id integer primary key,
someData1 text,
someData2 text
)
GroupMember
(
id integer primary key,
group_id foreign key to Group.id,
someData text
)
我知道,我的SQL語法不正確:)希望是非常明顯的。我的問題是這樣的:我想加載一個組記錄和與該組關聯的所有GroupMember記錄。正如我所看到的,有兩種選擇。
一個單一的查詢:
SELECT Group.id, Group.someData1, Group.someData2 GroupMember.id, GroupMember.someData
FROM Group INNER JOIN GroupMember ...
WHERE Group.id = 4;
兩個查詢:
SELECT id, someData2, someData2
FROM Group
WHERE id = 4;
SELECT id, someData
FROM GroupMember
WHERE group_id = 4;
第一溶液只有是一個數據庫往返的優點,但是具有返回冗餘數據的缺點(所有組數據爲每個組成員重複)
第二種解決方案不會返回重複的數據,但會涉及到數據庫的兩次往返。
這裏有什麼可取的?我想有一些門檻,如果組大小變得足夠大,返回所有冗餘數據的成本將大於額外數據庫調用所涉及的開銷。我應該在這裏考慮什麼其他的東西?
感謝, 喬丹
下面我回答,但你使用的是什麼數據庫? – Jeremy 2010-05-10 15:00:50
我正在使用postgres。 – Jordan 2010-05-10 15:36:21