如果表的结构确实如此简单,使用的不是非常古老(比如2000年以前发布的版本)的DBMS,并且数据库与Web服务器在同一台计算机上的话,不管使用inner join还是in等任何方式,联表查询与否对效率应该基本不会造成可以观测到的影响.
但是如果数据库在另一台计算机上,每次查询都会有的网络延迟就会让联表查询大大地优于1+N查询.
视图带来的唯一好处是让开发变得更简单,对性能则只会有所降低,不可能提升.这个与权限检查有关.
推荐实现方式:
1,每次只取一条/几条同一类型的数据,缓存起来.用的时候从缓存取,如果没有再从数据库里抓到缓存(推荐这种方式,既简单又实用,由于80/20原则的存在,通常性能不会比跨表查询低).
2,使用跨表查询,比如:
select
top 20 c.id, c.uid, c.content, c.createdate,
f.fid, u.uname, u.email
from
t_comment c,
t_friend f,
t_user u,
where
c.uid = f.uid
and u.uid = f.fid
order by
c.createdate desc