在某些網站裡你可以訂閱好友這樣好友發的消息就會出現在你的主頁裡這種方式確實很人性化但是就引出了一個疑問他們應該如何組織數據庫才能在很大的數據量和訪問量下效率最高呢?
首先數據庫應該是這樣的(括號裡是字段其他無關信息省略)
用戶表user (uid name) uid為主鍵
信息表msg (mid uid content) mid為主鍵uid為發貼人
好友表friend (uid fid) uid為主人fid為好友(即uid訂閱的人的id)
這樣要查詢出某人的所有好友的信息就可以這樣寫SQL語句(已查詢uid=的為例)
) SELECT * FROM msg friend WHERE msguid=friendfid AND friendfid=;
注意千萬不要寫成
) SELECT * FROM msg WHERE uid IN (SELECT fid FROM friend WHERE uid=);
子查詢的方法比級聯兩張表慢了不止個數量級!
(測試結果方法)能在ms查詢出結果而方法)則用了min還沒有出來結果)
[] [] []
From:http://tw.wingwit.com/Article/program/SQL/201311/16305.html