news(新闻表)(id主键)
id title
1 中国新闻
2 日本新闻
3 美国新闻comment(评论表)(aid为new表的关键字段)
aid comment
1 中国新闻的评论1
1 中国新闻的评论2
3 美国新闻的评论1
3 美国新闻的评论2
3 美国新闻的评论3//本来想把在news表当中添加一个commentNums(评论次数字段),在每添加一个评论的时候,就把news表当中对应的id的评论次数加1,但想一下这样好像不合理,又没有时间分析像一些大的架构的cms的表结构,所以请教大家一般的大型
的cms或者网站的设计结构是哪样的啊?如果是我像下面那样的话,请高手把sql 语句帮忙写出来,谢谢了
//要求查询news表当中的新闻,按照评论次数的多少降序显示出来,并把评论次数也显示出来,如下
标题 评论次数
美国新闻 3
中国新闻 2
日本新闻 0
id title
1 中国新闻
2 日本新闻
3 美国新闻comment(评论表)(aid为new表的关键字段)
aid comment
1 中国新闻的评论1
1 中国新闻的评论2
3 美国新闻的评论1
3 美国新闻的评论2
3 美国新闻的评论3//本来想把在news表当中添加一个commentNums(评论次数字段),在每添加一个评论的时候,就把news表当中对应的id的评论次数加1,但想一下这样好像不合理,又没有时间分析像一些大的架构的cms的表结构,所以请教大家一般的大型
的cms或者网站的设计结构是哪样的啊?如果是我像下面那样的话,请高手把sql 语句帮忙写出来,谢谢了
//要求查询news表当中的新闻,按照评论次数的多少降序显示出来,并把评论次数也显示出来,如下
标题 评论次数
美国新闻 3
中国新闻 2
日本新闻 0
a.title as 标题,
isnull(b.cnt,0) as 评论次数
from
news a
left join
(select aid,count(1) as cnt from comment group by aid) b
on
a.id=b.aid
查询select title,num from news a,(select aid,count(commnet) as num from comment ) as b where a.id=b.aid;
或者:
select
a.title as 标题,
isnull(b.cnt,0) as 评论次数
from
news a
left join
(select aid,count(1) as cnt from comment group by aid) b
on
a.id=b.aid
会不会很慢啊?
谢谢您的回答了您说:如果aid上有索引,仅访问索引文件就行了
如果这样的话一般的cms为什么还要分表处理把新闻内容的标题和内容用两表保存呢?
如果给id建立个索引的话,不是不要分表了吗?算法还简单,不好意思不要笑话,我对这方面比较差.