我想知道什麼最簡單的方法將在未來使我的查詢既有效又不太複雜。SQL表爲朋友,共同朋友,朋友朋友等
我應該保存像
from_id = 1,to_id = 2 from_id = 2,to_id = 1
或只是創建一個唯一的行雙向關係
from_id = 1,to_id = 2
有什麼想法?
我想知道什麼最簡單的方法將在未來使我的查詢既有效又不太複雜。SQL表爲朋友,共同朋友,朋友朋友等
我應該保存像
from_id = 1,to_id = 2 from_id = 2,to_id = 1
或只是創建一個唯一的行雙向關係
from_id = 1,to_id = 2
有什麼想法?
我建議去雙向關係。這是靈活的,只有額外的工作,而insert
ing和delete
記錄。
,我看到的好處是:
where from_id=userid
而不是where from_id=userid or to_id=userid
,後來是昂貴的。userA is friend of userB while userB does not approves the relationship
的情況。要做到這一點,您可能需要額外購買isApproved
,並將其設置爲true
爲from_id=userA, to_id=userB
,假設爲from_id=userB, to_id=userA
- 這將允許進一步便宜sort
和select
。 http://explainextended.com/2009/03/07/selecting-friends/包含對此主題的深入討論。結論就像你說的那樣 - 每個關係兩行更容易查詢,只需要一小筆維護費用。 – araqnid 2011-01-09 19:55:35
你可以發佈你的表的整個結構,以及一些查詢的例子嗎?你知道,爲了解如何優化你的數據庫,我們需要一些比你給我們的一般描述更多的信息。 – 2011-01-09 19:30:33