我正在爲我的大學建立一個社交網站和公告板系統。數據庫查詢社交網站的時間表
我想在Home Page中顯示來自LoggedInUser的朋友的10到15條最新帖子。
如果我從數據庫中選擇時間表表中的所有行,那麼它將消耗更多的內存並獲取不屬於LoggedInUser的朋友的帖子。
那麼最好的辦法是什麼?
幫幫我。
表「朋友」存儲用戶ID,FriendID和狀態。 表「時間軸」存儲所有用戶PostID和用戶ID的帖子我正在使用Apache,PHP和MySQL的
。
謝謝...
我正在爲我的大學建立一個社交網站和公告板系統。數據庫查詢社交網站的時間表
我想在Home Page中顯示來自LoggedInUser的朋友的10到15條最新帖子。
如果我從數據庫中選擇時間表表中的所有行,那麼它將消耗更多的內存並獲取不屬於LoggedInUser的朋友的帖子。
那麼最好的辦法是什麼?
幫幫我。
表「朋友」存儲用戶ID,FriendID和狀態。 表「時間軸」存儲所有用戶PostID和用戶ID的帖子我正在使用Apache,PHP和MySQL的
。
謝謝...
你會想看看SQL連接非常認真你去建立一個社交網絡之前。我不會說謊。如果您打算構建任何形式的社交網絡,這是一個非常基本的問題,您應該可以自己回答(沒有Stack Overflow)。
這就是說,這裏有兩個查詢將工作。你可以嘗試兩種方法並閱讀兩者之間的差異,以及使用一個和另一個的性能影響。我還應該提到,這些會爲您提供您需要的PostID,但您需要將它們與帖子表(大概)結合起來以獲取實際的帖子內容。我把這一步留給你。
此外,就獲得10-15個最新帖子而言,您需要問自己一個問題......您甚至可以用列出的表回答這個問題嗎?
提示:你不能。問:爲什麼不呢?
查詢選項1(得到所有的交IDS屬於friends.UserId =朋友???):
SELECT b.postid, b.userid
FROM friends AS a
INNER JOIN timeline AS b
ON a.FriendID = b.userid
WHERE a.UserID = ???
查詢選項2(被所有的交IDS屬於朋友的朋友.UserId = ???):
SELECT b.postid, b.userid
FROM timeline AS b
WHERE EXISTS (SELECT * FROM friends
WHERE friends.UserID = ??? AND b.UserID = friends.FriendID)
現在,你一個問題:你以上的回報這兩個查詢相同的結果?一個比另一個更好嗎?如果是這樣,它總是更好還是取決於情況?你可以給我一個例子嗎?
希望這有助於我也建立了一個學校項目的社交網站。
您是否考慮過在時間表中添加時間戳,以便您可以搜索最新帖子並向後計算給定用戶ID的最新帖子數。 – Kinnectus 2014-10-20 20:20:57