拉一页的动态,假如 20 条数据出来。每条动态上需要点亮是否关注、收藏、点赞这些状态。请问应该怎么去设计数据库比较合理?
我目前是在关系型数据库中通过下面的方式实现的,但是感觉性能上有缺陷。 如果用 nosql 的方式,又存在点赞人数非常多比如极端几十万个用户点赞,这种问题。 麻烦大佬指点一下!
//关注状态
if($needFollow){
$in = trim(implode(',', array_unique($uid_follow)),',');
$res = $this->query("SELECT `uid_follower` FROM relationship WHERE uid_follower in (".$in.")");
foreach ($res as $v){
$ufArr[$v['uid_follower']] = 1;
}
}
//点赞状态
$in = trim(implode(',', array_unique($feedid_uid)),',');
$res = $this->query("SELECT `feedid_liker` FROM feed_like WHERE feedid_liker in (".$in.")");
foreach ($res as $v){
$fuArr[$v['feedid_liker']] = 1;
}
//收藏状态
$in = trim(implode(',', array_unique($feedid_uid)),',');
$res = $this->query("SELECT `feedid_uid` FROM collect WHERE feedid_uid in (".$in.")");
foreach ($res as $v){
$cfuArr[$v['feedid_uid']] = 1;
}