查询执行被中断,错误#1317

PTC*_*PTC 11 mysql

我所拥有的是一个包含大量产品的表(在本例中为书籍).我的销售点系统为我生成了一份包含ISBN(唯一产品编号)和永久销售额的报告.

我基本上需要做一个更新,将一个表中的ISBN与另一个表中的ISBN匹配,然后将销售额从一个表添加到另一个表.

这需要为大约30,000种产品完成.

这是我正在使用的SQL语句:

UPDATE `inventory`,`sales` 
   SET `inventory`.`numbersold` = `sales`.`numbersold` 
 WHERE `inventory`.`isbn` = `sales`.`isbn`;
Run Code Online (Sandbox Code Playgroud)

我收到MySQL错误:

#1317 SQLSTATE:70100(ER_QUERY_INTERRUPTED)查询执行被中断

我使用的是GoDaddy.com提供的phpMyAdmin

小智 7

我可能有点迟到了,但是......看起来查询被执行时间限制中断了.可能没有简单的方法,但这里有几个想法:

确保inventory.isbnsales.isbn编入索引.如果不是,添加索引将大大缩短执行时间.

如果这不起作用,将查询分解为块并运行几次:

UPDATE `inventory`,`sales` 
  SET `inventory`.`numbersold` = `sales`.`numbersold` 
WHERE `inventory`.`isbn` = `sales`.`isbn`
  AND substring(`inventory`.sales`,1,1) = '1';
Run Code Online (Sandbox Code Playgroud)

AND条款将搜索限制为以数字1开头的ISBN.对每个数字运行查询,从"0"到"9".对于ISBN,您可能会发现在最后一个字符上选择可以获得更好的结果.使用substring(库存.sales,-1)`


ech*_*_Me 0

尝试在两个表中使用 INNER JOIN

       UPDATE `inventory` 
       INNER JOIN `sales` 
       ON  `inventory`.`isbn` = `sales`.`isbn`
       SET `inventory`.`numbersold` = `sales`.`numbersold` 
Run Code Online (Sandbox Code Playgroud)