在某些网站里你可以订阅好友这样好友发的消息就会出现在你的主页里这种方式确实很人性化但是就引出了一个疑问他们应该如何组织数据库才能在很大的数据量和访问量下效率最高呢?
首先数据库应该是这样的(括号里是字段其他无关信息省略)
用户表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还没有出来结果)
[] [] []