一个mysql复杂查询问题

lengmianshi 发布于 2017/04/21 18:04
阅读 212
收藏 0

假设有两张表,帖子表(tie,主键tid)和帖子回复表(com,主键cid),贴子的主键是回复表的外键。现在要一次查询这种结果:

返回10则帖子并且每个帖子需带10条最新的回复,请问sql或存储过程该怎么写啊?

加载中
0
风翔飞
风翔飞

不要都放在sql去处理,你可以查出10个帖子和所有回复,然后代码去除10条之后的回复

比你用sql处理简单的多

l
lengmianshi
还要把帖子和回复join起来呢,咋办
0
刘大神
刘大神

sql server的存储过程本身效率就不是很高,你这种复杂查询的逻辑 就像1L说的那样,拆分,简化;尽量对sql处理要简单,要不然数据量一大就有你受的

0
l
lengmianshi

引用来自“刘大神”的评论

sql server的存储过程本身效率就不是很高,你这种复杂查询的逻辑 就像1L说的那样,拆分,简化;尽量对sql处理要简单,要不然数据量一大就有你受的

拆开来查是可以,不过要多次连接数据库啊,本来是在代码中处理的,发现太慢了

l
lengmianshi
回复 @刘大神 : 每次获取的评论都是最新的,怎么缓存啊。不过我用存储过程来做了,一共访问两次数据库,然后在后端把两次的数据组装在一起,一次请求耗时2百多到4百多毫秒之间,可以接受了
刘大神
刘大神
回复@lengmianshi : 没有缓存?
0
l
liun

rank() over()函数可以做到

返回顶部
顶部