用户名: 密码: 忘记密码? 注册
收藏此问题 发表新评论

求2表连查好友发帖的sql优化

et_content 内容表 数据300w
content_id user_id
文章id 用户id\

et_friend 用户好友表 数据50w
fid_fasong fid_jieshou
我的id 我加的好友id

目的查询出我的好友的发帖
现在2种方式都不是很理想
a:
SELECT * FROM et_friend where fid_fasong=$user[user_id];
出来(id,id,id,id,id,id,id,id,id,id)可能出来500个
SELECT * FROM et_content where user_id in (id,id,id,id,id,id,id,id,id,id) and conttype != 'reply' c.content_id>1000000;
由于in里的好友可能比较多 比如有500个
慢日志里有很多记录


b:
SELECT * FROM et_content AS c LEFT JOIN et_friend AS f ON c.user_id=f.fid_jieshou WHERE c.content_id>1000000 and f.fid_fasong='$user[user_id]' and conttype != 'reply' ORDER BY c.content_id DESC LIMIT $start,10"
2表left join 
经常出错误 Incorrect key file for table '/tmp/#sql_192a_0.MYI'; try to repair it
估计是内存等不够

求大家给个好的优化思路,谢谢

昵称: dongdongmo  时间: 2011-06-15 16:20:00
索引情况如何
user_id上建立索引没有

B:
建立索引试试
et_content :content_id、conttype
et_friend:id_fasong
昵称: wwwwb  时间: 2011-06-15 16:25:31
LEFT JOIN ?不应该是 inner join 么?

left join 把数据少的表 放在前面。

或者 SELECT * FROM et_content where user_id in(Select fid_jieshou * from et_friend Where fid_fasong='$user[user_id]' ****) and ****
昵称: jastby  时间: 2011-06-15 16:28:09
引用 1 楼 wwwwb 的回复:

索引情况如何
user_id上建立索引没有

B:
建立索引试试
et_content :content_id、conttype
et_friend:id_fasong

都加了
昵称: dongdongmo  时间: 2011-06-15 16:35:08
发表评论
昵称:
内容:
验证: