mysql删除连接无故失败?

标签 mysql mysql-5.7

我正在尝试执行连接删除操作,但超时了。不确定这是交叉连接问题还是我的机器上的 MySQL 问题。 win 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 的一部分,我只想删除旧数据的所有痕迹并加载到达记录的新数据,同时保留不只是作为文本文件发送的旧记录(因此没有截断表)。

我已经将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 )

最佳答案

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

关于mysql删除连接无故失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42726143/

相关文章:

mysql - 不了解 DBD::MySQL 属性 "mysql_bind_type_guessing"的行为

mysql - EXISTS 和 JOIN 检查记录是否存在的区别

mysql - 更新多重内连接的表

mysql - 升级到 mysql 5.7 后日期函数不工作

mysql - MYSQL Full GROUP BY 的解决方法

php - @mysqli_select_db -- 访问被拒绝

php - 我编辑的 index.php(主页)不会更新我在 mysql 上的主表

mysql - 从表中获取总和小于 value 的行

MySQL - 选择或提取 JSON 对象数据作为列和值

mysql - 同一查询重复执行时返回不同的值