>  기사  >  백엔드 개발  >  세 개의 테이블, 공동 테이블 쿼리, 이 SQL을 더욱 최적화할 수 있습니까?

세 개의 테이블, 공동 테이블 쿼리, 이 SQL을 더욱 최적화할 수 있습니까?

WBOY
WBOY원래의
2016-08-20 09:04:071086검색

SELECT c.username,c.sex,c.attentions,c.fans,a.id,a.content,a.isnum,a.times,a.turm, a.keep,a.comments,a.uid,b.mini,b.mednum,b.maxs
FROM (wb_userinfo c LEFT JOIN wb_weibo a ON c.uid = a.uid)
LEFT JOIN wb_picture b ON a.id = b.wid WHERE a.uid IN(SELECT follow FROM wb_follow WHERE fans = 27) OR a.uid = 27 ORDER BY a.times LIMIT 0,10;

回复内容:

SELECT c.username,c.sex,c.attentions,c.fans,a.id,a.content,a.isnum,a.times,a.turm, a.keep,a.comments,a.uid,b.mini,b.mednum,b.maxs
FROM (wb_userinfo c LEFT JOIN wb_weibo a ON c.uid = a.uid)
LEFT JOIN wb_picture b ON a.id = b.wid WHERE a.uid IN(SELECT follow FROM wb_follow WHERE fans = 27) OR a.uid = 27 ORDER BY a.times LIMIT 0,10;

유용하거나 可以考虑换成용 노동조합来尝试下

<code>(SELECT c.username,c.sex,c.attentions,c.fans,a.id,a.content,a.isnum,a.times,a.turm,a.keep,a.comments,a.uid,b.mini,b.mednum,b.maxs
FROM (wb_userinfo c LEFT JOIN wb_weibo a ON c.uid = a.uid)
LEFT JOIN wb_picture b ON a.id = b.wid WHERE a.uid IN(SELECT follow FROM wb_follow WHERE fans = 27) )
union
(SELECT c.username,c.sex,c.attentions,c.fans,a.id,a.content,a.isnum,a.times,a.turm,a.keep,a.comments,a.uid,b.mini,b.mednum,b.maxs
FROM (wb_userinfo c LEFT JOIN wb_weibo a ON c.uid = a.uid)
LEFT JOIN wb_picture b ON a.id = b.wid WHERE a.uid = 27 )
ORDER BY a.times LIMIT 0,10;</code>

이용explain看看分析报告贴来看下, ref的值与row是的值索引使用情况等, 连表查询的话我正常建议是拆简单查询来。

就sql而言,可优化的공간은 间不大,建议拆成若干条简单的sql,代码里实现最终业务逻辑。

PS: 尽weight避免는 sql里에서 발행됩니다or

가입이 불가능합니다

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.