Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 慢速查询会占用整个硬盘空间,导致;1030从存储引擎获取错误28“;_Mysql_Sql_Innodb_Mysql Error 1030 - Fatal编程技术网

Mysql 慢速查询会占用整个硬盘空间,导致;1030从存储引擎获取错误28“;

Mysql 慢速查询会占用整个硬盘空间,导致;1030从存储引擎获取错误28“;,mysql,sql,innodb,mysql-error-1030,Mysql,Sql,Innodb,Mysql Error 1030,对MySQL来说是相当新的 慢速查询会占用整个硬盘空间,最终导致1030个错误代码 INSERT INTO schema.Table C SELECT a.`Date`, a.Store, a.SKU, floor((a.QTY / ((b.CASEQTY * b.CASEPERLAYER) * b.LAYERPERPALLET))) AS Pallets, floor(((a.QTY / ((b.CASEPERLAYER * b.LAYERPERPALLET) *

对MySQL来说是相当新的

慢速查询会占用整个硬盘空间,最终导致1030个错误代码

INSERT INTO schema.Table C
SELECT a.`Date`, a.Store, a.SKU, 
       floor((a.QTY / ((b.CASEQTY * b.CASEPERLAYER) * b.LAYERPERPALLET))) AS Pallets,
       floor(((a.QTY / ((b.CASEPERLAYER * b.LAYERPERPALLET) * b.CASEQTY)) /.CASEQTY)) AS Cases,
       (a.QTY * b.CASEQTY) AS Pieces
FROM
    (schema.table1 AS a
    INNER JOIN schema.table2 AS b)
    WHERE a.Description = 'BLAH';
问题:

当我运行上面的查询时,我在0.01秒内得到了所需的结果,限制为100行。但是,当我尝试将查询插入到准备好的表中时,它失败了


上述查询将基本上运行数小时,直到硬盘驱动器已满。表A包含数百万条记录,而表B只有几千条。存储引擎是InnoDB。我已经运行了3小时类似的查询,并且成功了。任何帮助都将不胜感激。

这是MySQL的一大特色。尽管称之为内部联接,但您可以通过省略ON子句来执行交叉联接,而ON子句正是您正在执行的操作。(另一个dbms将引发语法错误。)


因此,通过不指定ON子句来匹配表1和表2中的记录,就可以将表1中的每条记录与表2中的每条记录进行匹配。这些可能有很多:-)

您的内部连接语句不包含连接条件。这将导致被称为“笛卡尔积”的东西(不好)。因此,如果表A有一百万条记录,而表b有一千条记录,那么笛卡尔积将表A中的每一行与另一个表中的每一行相匹配。这会给你(至少)10亿条记录


要解决这个问题,您需要使用一个“ON”子句来定义/约束两个表之间的关系,否则它可能会出现在WHERE子句中。

我完全忘记了ON子句!谢谢你指出这一点!我花了3天时间试图弄清楚为什么会发生这种情况,我认为这与InnoDB引擎有关。