最近使用mysql,两表关联查询遇到悲催的事,查了些资料了也没能解决,粉丝用户表4W多,粉丝标签表2千多数据,一个查询下来19秒,受不鸟了 求且高人指路。
       wx_fans表中,openid是主键,subscribetime是全文关键字索引,其他为普通信息字段;
       wx_fans_tag_r表中,openid是全文关键字索引,该表只有俩字段,openId和tagId(也就是一对多,一个粉丝有多个标签的意思)
       下面是查询语句:          SELECT t.openid, subscribetime,createtime, subscribeStatus, nickname, nicknameStr, gender, country, province, city, headimgurl, STATUS, re,groupId, r.tagId FROM wx_fans t 
           LEFT OUTER JOIN wx_fans_tag_r r ON t.openid=r.openid WHERE 1=1
           ORDER BY subscribetime DESC
           LIMIT 0,20    以下是EXPLAIN sql的结果:
    以下是 SHOW INDEX FROM wx_fans的结果:
    以下是 SHOW INDEX FROM wx_fans_tag_r的结果:    求指点!!!! 

解决方案 »

  1.   

    建立两个索引
    alter table   wx_fans add key(subscribetime, opened);
    alter table wx_fans_tag_r add key(opened)
      

  2.   

    第二个索引不需要  截图里面显示就是btree索引
      

  3.   

    join_buffer_size 调大试试
      

  4.   

    加了之后 的执行计划是怎么样的?
    explain select ....