我正在尝试进行连接删除并且超时。不确定它是否是我的盒子上的交叉连接问题或MySQL问题。赢得7 64,使用MySQL 5.7.17社区。 p>
vipre av与trend wfb 9竞争上一次这个问题开始并自行解决(测试AV产品,我知道你不应该安装2个)。我打算将我的小型数据集市转移到MySQL,但无法弄清楚是什么导致了这个问题,如果我无法弄清楚发生了什么,就无法将所有内容建立在MySQL上。
所以保持超时的SQL是:
DELETE prod
FROM cmdata.vauto_feed_options as prod
INNER JOIN cmdata.vauto_feed_options_cache stage
using ( stock__ )
或
delete prod
FROM cmdata.vauto_feed_options as prod
INNER JOIN cmdata.vauto_feed_options_cache stage
ON ( prod.stock__ = stage.stock__
AND prod.vin = stage.vin)
或许多其他组合,没有运气。 该表没有自然主键,唯一的复合键是所有字段。这是数据ELT的一部分,我只想删除旧数据的所有痕迹,并为到达的记录加载新数据,同时保留不仅仅作为文本文件发送的旧记录(因此没有截断表)。 / p>
我已将innodb翻转到myisam并返回,删除了表并重新创建,排除了av扫描路径,禁用av,删除了av(防病毒)。我添加了va_option_id作为自动编号pk只是为了有一个。
新数据包含每个vin和库存组合50到100个记录,并且功能文本不同(地板垫,DVD播放机等)。实际上从csv文件中的单个字段规范化为我的存储行。
delete prod CREATE TABLE `vauto_feed_options` (
`va_option_id` int(11) NOT NULL AUTO_INCREMENT,
`Stock__` varchar(10) NOT NULL,
`VIN` varchar(17) NOT NULL,
`Features` varchar(200) NOT NULL,
PRIMARY KEY (`va_option_id`)
) ENGINE=InnoDB AUTO_INCREMENT=297269 DEFAULT CHARSET=utf8;
296303条记录
CREATE TABLE `vauto_feed_options_cache` (
`Stock__` varchar(10) DEFAULT NULL,
`VIN` varchar(17) DEFAULT NULL,
`Features` varchar(200) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
58151条记录
在一个更大的数据集上做了类似的删除连接但没有问题,但那些其他表具有很好的主键一致性(1到1)
delete prod
FROM tblname_cache
INNER JOIN tblname as prod
ON ( prod.company_number = tblname_cache.company_number
AND prod.record_key = tblname_cache.record_key )
答案 0 :(得分:0)
您需要在两个表中的__stock列上添加索引。