我现在要做的就是把temp表里的所有数据插入到ips表里面去,可ips表里面带了(`ip`,`refererId`,`linksId`)的索引,我写的批量插入语句效率上有很大的问题,哪位大大来帮我研究个高效的插入方式啊~谢谢了CREATE TABLE `ips` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ip` varchar(50) DEFAULT NULL,
  `refererId` int(11) DEFAULT NULL,
  `linksId` int(11) DEFAULT NULL,
  `created` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `key` (`ip`,`refererId`,`linksId`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;CREATE TABLE `temp` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `linksid` int(11) DEFAULT NULL,
  `url` varchar(500) DEFAULT NULL,
  `title` varchar(500) DEFAULT NULL,
  `refererid` int(11) DEFAULT NULL,
  `referer` varchar(255) DEFAULT NULL,
  `ip` varchar(60) DEFAULT NULL,
  `created` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
) ENGINE=MyISAM DEFAULT CHARSET=gb2312 ROW_FORMAT=FIXED;我是这样写的效率上似乎太低了~~帮帮忙吧~
insert into ips (refererid,linksid,ip,created)
     SELECT refererid,linksid,ip,now() as created
     FROM temp where 
         (refererid not in (select refererid from ips) and linksid not in (select linksid from ips) and ip  in (select ip from ips))
     or (refererid not in (select refererid from ips) and linksid in (select linksid from ips) and ip not in (select ip from ips))
     or (refererid in (select refererid from ips) and linksid not in (select linksid from ips) and ip not in (select ip from ips)) 
     or (refererid in (select refererid from ips) and linksid in (select linksid from ips) and ip not in (select ip from ips))
     or (refererid in (select refererid from ips) and linksid not in (select linksid from ips) and ip in (select ip from ips))
     or (refererid not in (select refererid from ips) and linksid in (select linksid from ips) and ip in (select ip from ips)) 
     or (refererid not in (select refererid from ips) and linksid not in (select linksid from ips) and ip not in (select ip from ips)) 
     GROUP by refererid,linksid,ip;