mysqlcompare花费了太多时间


mysql compare takes too much time

我使用下面列出的3个表:

 CREATE TABLE `user` (
  `uid` int(10) NOT NULL AUTO_INCREMENT,
  `kid` int(3) NOT NULL,
  `Email` varchar(255) DEFAULT NULL,
  `del` tinyint(1) DEFAULT '0',
  PRIMARY KEY (`uid`),
  KEY `kid` (`kid`),
  KEY `email` (`Email`)
) ENGINE=MyISA

CREATE TABLE `blacklist_global` (
  `bgid` int(10) NOT NULL AUTO_INCREMENT,
  `email` varchar(255) NOT NULL,
  `kid` int(3) DEFAULT NULL,
  `stmp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`bgid`),
  UNIQUE KEY `email` (`email`),
  KEY `kid` (`kid`)
) ENGINE=MyISAM

CREATE TABLE `verteiler_user` (
  `vuid` int(10) NOT NULL AUTO_INCREMENT,
  `uid` int(3) NOT NULL,
  `vid` int(3) NOT NULL,
  `del` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`vuid`),
  KEY `uid` (`uid`)
) ENGINE=MyISAM

表CCD_ 1中的每个条目也在表verteiler_user中。现在我想delete来自用户where user.uid = verteiler_user.uid and verteiler_user.vid=XX and user.uid = XXX 的每个条目

所以atm-im从php中获取表user中的所有条目,所有条目都来自blacklist_global。问题是,在黑名单中,我可以输入*@heloooo.de,所以我想删除域名helooo.de中的每一封电子邮件,但速度非常非常慢。

是否可以只在mysql中进行?没有php?或者有什么建议,可以更快地完成吗?

这可能会满足您的需要。在将其用于生产数据之前,请先对其进行测试。

DELETE FROM user WHERE uid = ? AND uid in (SELECT uid from verteiler_user WHERE vid = ?)

根据评论编辑:

user0