我使用下面列出的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 = ?)
根据评论编辑:
user
0