mysql删除加入失败无缘无故?

时间:2017-03-10 19:18:51

标签: mysql mysql-5.7

我正在尝试进行连接删除并且超时。不确定它是否是我的盒子上的交叉连接问题或MySQL问题。赢得7 64,使用MySQL 5.7.17社区。

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 )

1 个答案:

答案 0 :(得分:0)

您需要在两个表中的__stock列上添加索引。