我应该加入第四个mysql表还是使用IN子句?

时间:2009-07-28 11:49:17

标签: mysql

下面是我正在研究的一个mysql查询 用户状态POst(在某种程度上像推特) 对这些帖子的评论 用户照片和姓名,以显示谁发布了状态帖子或评论

IN子句中的用户ID列表是从另一个查询生成的,该查询是一个大约一百万行的大表。 我是否应该尝试将该表格加入到下面的查询中,或者将这些结果分开,就像我现在这样,我们就像下面所示 作为一串ID?

SELECT s.statusid, s.userid, s.statustype, 
       s.subject, s.datetime, c.commentid, 
       c.statusid, c.userid, c.comment, c.datetime, 
       fru.disp_name, fru.pic_url
FROM teststatus AS s
LEFT JOIN teststatuscomments AS c ON s.statusid = c.statusid
LEFT JOIN friend_reg_user AS fru ON ( fru.auto_id = s.userid 
                                      AND fru.auto_id = c.userid ) 
WHERE s.userid =1
OR s.userid
IN ( 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 ) 
ORDER BY s.statusid

2 个答案:

答案 0 :(得分:1)

如果您需要使用大型IN子句进行此类查询,那么它与您的架构有点混淆。

您应该加入这些行,而不是生成这么长的IN语句。 什么存储在这些数百万行中?

答案 1 :(得分:0)

尝试两者,在原始问题中同时发布两者的代码,并使用不同的并发线程对结果进行基准测试。请引用您的mysql版本字符串以获得繁荣。