mysql在大数据中删除重复行
我有一个针对重复行的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
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,那么一些杂乱的删除将工作得更快