Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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在大数据中删除重复行_Mysql_Bigdata_Delete Row - Fatal编程技术网

mysql在大数据中删除重复行

mysql在大数据中删除重复行,mysql,bigdata,delete-row,Mysql,Bigdata,Delete Row,我有一个针对重复行的mysql删除查询 DELETE DupRows.* FROM myData AS DupRows INNER JOIN ( SELECT MIN(ID) AS minId, ondate, symbol FROM myData GROUP BY ondate, symbol

我有一个针对重复行的mysql删除查询

DELETE DupRows.*
                FROM myData AS DupRows
                   INNER JOIN ( 
                      SELECT MIN(ID) AS minId, ondate, symbol
                      FROM myData
                      GROUP BY ondate, symbol
                      HAVING COUNT(*) > 1
                   ) AS SaveRows ON SaveRows.ondate = DupRows.ondate AND SaveRows.symbol = DupRows.symbol
                      AND SaveRows.minId <> DupRows.ID;
但myData表现在将有500000多行,并且很快将达到x100行。当我工作的时候,这个查询可能会很多次,或者根本不起作用

所以我想添加cron作业,我想每1小时进行一次查询,并且只想在添加行之前1小时进行查询

如何在查询中添加此功能


谢谢

您可以使用Mysql事件,您可以在每一小时自动触发一次。它的工作方式类似于cron作业,您可以在其中执行删除查询。有关活动,您可以参考以下链接:


希望它能帮助您最终确定您的方法。

停止您正在做的事情!更改架构以防止dup行。那就把那些傻瓜扔掉。然后才继续接收数据

表中dups的百分比是多少?如果是一个大的pct,那么

CREATE TABLE new LIKE myData;
ALTER TABLE new ADD UNIQUE (ondate, symbol);  -- Is this what you need?
INSERT IGNORE INTO new (id, ondate, symbol)
    SELECT MIN(id), ondate, symbol FROM myData
        GROUP BY    ondate, symbol;
RENAME TABLE myData TO old,
             new TO myData;
DROP TABLE old;
如果你有超过3列,它会更混乱

如果它是一个小的pct,那么一些杂乱的删除将工作得更快