商品表
id:商品id
name:商品名称
price:商品价格
商品评论表
id:评论id
gid:商品id
comment:评论内容
addtime:评论时间
现在有个商品列表,要实现如下功能
查出来多个商品,同时每个商品只查出来一条最新的评论
想知道怎么写效率更高,不要先查出来所有商品再循环查对应的评论 这种方法,求大神指教
商品表
id:商品id
name:商品名称
price:商品价格
商品评论表
id:评论id
gid:商品id
comment:评论内容
addtime:评论时间
现在有个商品列表,要实现如下功能
查出来多个商品,同时每个商品只查出来一条最新的评论
想知道怎么写效率更高,不要先查出来所有商品再循环查对应的评论 这种方法,求大神指教
select a.* b.id b.comment b.addtime from tableA(商品表名) a left join tableB(评论表名) b on a.id = b.gid order by b.addtime desc limit 0,1
我这里有个用户表users,文章表help_docs
sql 如下,取出所有用户,每个用户附带一个文章
select users.user_name,users.user_id ,h.title from users left join help_docs h on h.user_id = users.user_id where h.id is not null group by users.user_id
如果想把没文章的用户也取出来把where条件去掉就好了
select g.`id`,g.`name`,c.`comment`,c.`gid` from `good` g left join `comment` c on c.`gid`=g.`id` group by g.`id` order by c.`addtime` desc
对于MySQL5.7以上的需要删掉 ONLY_FULL_GROUP_BY
select *,(select comment from tb_comment as c where c.gid=p.id limit 1) as comm from product as p; 没试过性能怎么样,你explain一下试试
5 回答3.3k 阅读✓ 已解决
3 回答3.7k 阅读✓ 已解决
1 回答4.2k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
2 回答2.9k 阅读✓ 已解决
5 回答1.4k 阅读
很少有评论列表是实时显示的都是拿的缓存数据,用脚本去更新最新数据。如果说要优化的话,
1: 可以加一张表,表示gid对应最新的一条评论ID,更新评论的时候顺便更新这张表。
2: 建立关于商品评论gid的唯一索引,速度会明显上升。