SELECT DISTINCT
  (b.nid),
  b.*,
  t.tid          ttid,
  t.targetid     ttargetid,
  t.mid          tmid,
  t.type         ttype,
  t.subject      tsubject,
  t.content      tcontent,
  t.reviewnum    treviewnum,
  t.goodnum      tgoodnum,
  t.photopath    tphotopath
FROM tour_timeline_notice b
  JOIN tour_timeline_notice a
    ON b.targetid = a.targetid
  JOIN tour_timeline_target t
    ON b.tid = t.tid
WHERE b.isOwnerJoin = 1
    AND b.type = a.type
    AND b.action = a.action
    AND b.createtime > a.createtime
    AND a.replymid = '011BF005520A1C7EFF8080'
    AND (a.action = 'r'
          OR a.action = 'j')
    AND b.replymid != '011BF005520A1C7EFF8080'
    AND (b.action = 'r'
          OR b.action = 'j')
    AND t.mid != '011BF005520A1C7EFF8080'
    AND b.createtime > DATE_SUB(CURDATE(), INTERVAL 2 MONTH)
    AND a.createtime > DATE_SUB(CURDATE(), INTERVAL 2 MONTH)
ORDER BY b.createtime DESC
LIMIT 100
CREATE TABLE `tour_timeline_notice` (
   `nid` int(10) unsigned NOT NULL AUTO_INCREMENT,
   `mid` char(32) CHARACTER SET ascii NOT NULL COMMENT '动作人mid',
   `tid` int(10) unsigned NOT NULL COMMENT 'tour_timeline_target主键',
   `targetid` char(32) CHARACTER SET ascii NOT NULL COMMENT '目标对象id',
   `action` char(1) CHARACTER SET ascii NOT NULL,
   `type` char(1) CHARACTER SET ascii NOT NULL,
   `replyid` char(32) CHARACTER SET ascii DEFAULT NULL,
   `replymid` char(32) CHARACTER SET ascii DEFAULT NULL COMMENT '回复者mid',
   `replyComment` varchar(2000) DEFAULT NULL COMMENT '回复内容',
   `createtime` datetime NOT NULL,
   `isOwnerJoin` tinyint(1) DEFAULT '0' COMMENT '是否是“我参与的”类型,“0”:不是,“1”:是',
   PRIMARY KEY (`nid`),
   KEY `replymid` (`replymid`),
   KEY `tid` (`tid`),
   KEY `mid_createtime` (`mid`,`createtime`),
   KEY `targetid` (`targetid`),
   KEY `replyid` (`replyid`),
   KEY `NewIndex1` (`createtime`)
 ) ENGINE=InnoDB AUTO_INCREMENT=5734453 DEFAULT CHARSET=utf8 COMMENT='我的空间动态'
;CREATE TABLE `tour_timeline_target` (
   `tid` int(10) unsigned NOT NULL AUTO_INCREMENT,
   `targetid` char(32) CHARACTER SET ascii NOT NULL COMMENT '目标对象id',
   `mid` char(32) CHARACTER SET ascii NOT NULL COMMENT '目标对象创建用户id',
   `type` char(1) CHARACTER SET ascii NOT NULL,
   `subject` varchar(128) DEFAULT NULL,
   `content` varchar(2000) DEFAULT NULL,
   `reviewnum` smallint(4) DEFAULT '0',
   `goodnum` mediumint(8) DEFAULT '0',
   `photopath` varchar(1536) CHARACTER SET ascii DEFAULT NULL,
   PRIMARY KEY (`tid`),
   UNIQUE KEY `targetid_type` (`targetid`,`type`),
   KEY `mid` (`mid`)
 ) ENGINE=InnoDB AUTO_INCREMENT=8969824 DEFAULT CHARSET=utf8 COMMENT='空间动态内容表'
;

解决方案 »

  1.   

    在连接、条件字段上建立索引
    比如tour_timeline_notice
    isOwnerJoin、type、action、createtime 、replymid 建立复合索引
      

  2.   

    还是不行会有Using where; Using temporary; Using filesort
      

  3.   

    create index xxxx1 on tour_timeline_notice(isOwnerJoin,createtime);
    create index xxxx2 on tour_timeline_notice(targetid,type,action,replymid,createtime);
    create index xxxx11 on tour_timeline_notice(replymid,createtime);
    create index xxxx21 on tour_timeline_notice(targetid,type,action,isOwnerJoin,createtime);