gpt4 book ai didi

mysql - 有没有一种更快的方法来从一个表中删除重复项?

转载 作者:行者123 更新时间:2023-11-29 06:32:46 25 4
gpt4 key购买 nike

我有一个 184k 条记录的表,并且按键 concat(tradedate,stock_short) 有一些重复项。我的方法如下:

Delete from levermannwithoutdub where recnum not in
(Select max(recnum) from leverman groub by concat(tradedate,stock_short));

两个表levermanwithoutdubleverman在开头是相同的。

但是该操作现在需要 15000 秒并且仍在工作。

是否有更快的方法来删除应保留最大(recnum)重复项的重复项?

我试图理解下面的尝试:

only one stock?

但我仍然有大约 2500 个重复项,其中同一记录最多 38 个副本。

Here is my check

如何在所有 2528 个重复项上运行它?

法西特:我做了以下事情: 创建一个空的相同表,其索引唯一于 (tradedate,stock_short)。 以 renum 降序导出旧表。 通过 Workbench 导入并忽略错误。

只花了大约5分钟。我确实知道这不是复杂的方法,但它比通过一组renums删除它。

此外:我发现:Tutorial 从我这样做的地方:

    DELETE t1 FROM levermann t1
INNER JOIN
lev_mitdup_Lnotnull t2
WHERE
t1.recnum < t2.recnum AND concat(t1.tradedate,t1.stock_short) =
concat(t2.tradedate,t2.stock_short);

最佳答案

确保表杠杆曼列(tradedate、stock_short)上有索引避免使用 where 和 group by 的连接,并使用子查询来减少仅在重复行处的搜索

Delete twd
from levermannwithoutdub twd
inner join (
SELECT max(recnum) max_recnum
FROM leverman l
INNER JOIN (
SELECT tradedate,stock_short
FROM leverman
GROUP BY tradedate,stock_short
HAVING COUNT(*) > 1
) t ON t.tradedate = l.tradedate
AND t.stock_short = l.stock_short
) r on r.max_recnum = twd.recnum

如果您有更多的值,不仅是重复的,而且是三重或更多,您需要再次运行删除查询

您可以使用

查看您的值(value)
    SELECT  tradedate,stock_short, count(*) dup
FROM leverman
GROUP BY tradedate,stock_short
HAVING COUNT(*) > 1
ORDER BY dup desc

事实上,每个交易日期都有很多重复的实例,stock_short您还可以尝试删除与 tradedate、stock_short 匹配且 <> max_recnum

的所有行
Delete  twd
from levermannwithoutdub twd
inner join (
SELECT max(l.recnum) max_recnum, t.tradedate, t.stock_short
FROM leverman l
INNER JOIN (
SELECT tradedate,stock_short
FROM leverman
GROUP BY tradedate,stock_short
HAVING COUNT(*) > 1
) t ON t.tradedate = l.tradedate
AND t.stock_short = l.stock_short
) r on r.max_recnum <> twd.recnum
AND r.tradedate = twd.tradedate
AND r.stock_short = twd .stock_short

关于mysql - 有没有一种更快的方法来从一个表中删除重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55416767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com