Heim  >  Artikel  >  Backend-Entwicklung  >  分表之后,按照时间排序获得数据有没有好的方式

分表之后,按照时间排序获得数据有没有好的方式

WBOY
WBOYOriginal
2016-08-10 09:07:191565Durchsuche

有三张表:

用户表:user-------------------user_id


文章表:article----------------article_id,user_id;


评论表:article_comment----comment_id,article_id


user表对article_comment表是一对多对多的关系。

现在对article_comment进行分表,按照article_id%6分为article_comment_0/1/2/3/4/5六张表,
现在需要根据评论的时间来展示某一个用户的所有文章的评论,sql该怎么写呢?

回复内容:

有三张表:

用户表:user-------------------user_id


文章表:article----------------article_id,user_id;


评论表:article_comment----comment_id,article_id


user表对article_comment表是一对多对多的关系。

现在对article_comment进行分表,按照article_id%6分为article_comment_0/1/2/3/4/5六张表,
现在需要根据评论的时间来展示某一个用户的所有文章的评论,sql该怎么写呢?

<code>SELECT * FROM((SELECT * FROM article_comment_0 INNER JOIN article ON article_comment_0.article_id=article.article_id WHERE article.user_id='userid') UNION
(SELECT * FROM article_comment_1 INNER JOIN article ON article_comment_1.article_id=article.article_id WHERE article.user_id='userid') UNION
(SELECT * FROM article_comment_2 INNER JOIN article ON article_comment_2.article_id=article.article_id WHERE article.user_id='userid') UNION
(SELECT * FROM article_comment_3 INNER JOIN article ON article_comment_3.article_id=article.article_id WHERE article.user_id='userid') UNION
(SELECT * FROM article_comment_4 INNER JOIN article ON article_comment_4.article_id=article.article_id WHERE article.user_id='userid') UNION
(SELECT * FROM article_comment_5 INNER JOIN article ON article_comment_5.article_id=article.article_id WHERE article.user_id='userid')) res
ORDER BY res.comment_createtime DESC
</code>

你的表这样子设计就要每次都去联结article查询,所以建议在common表中冗余一个user_id字段,这样查询就不用多一步操作

能不分表就不分表,分表会给开发带来很大麻烦,你可以用分区,mysql不太懂,但是我搜到这个:

http://dev.mysql.com/doc/refm...

应该按照你查询条件进行分表,不然没有好办法

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn