gpt4 book ai didi

更新重复行的 MySql 查询非常慢。建议需要加快

转载 作者:行者123 更新时间:2023-12-01 00:38:55 24 4
gpt4 key购买 nike

我有表 promotional,其中包含列(promoidmobilemessage_sent_status,还有 15 个... ).该表有大约 10,000 行。我想将列的值 (mobile) 更新为空白(空字符串),其中除了第一次出现外还有重复的条目。

UPDATE promotional
SET mobile='', message_sent_status='BLANK'
WHERE mobile!='' and promo_id not in
(
SELECT min(promo_id)
FROM (SELECT * FROM promotional) as temp
GROUP BY mobile
);

此查询运行良好,但即使没有找到重复条目也会花费大量时间(大约 1 分钟)。

但是当我换行的时候

FROM (SELECT * FROM promotional) as temp

// with only required column
FROM (SELECT promo_id, mobile,messsage_sent_status, FROM promotional) as temp

大约需要 40 秒。

我想知道是否有任何方法可以加快查询速度或者查询所花费的时间是可以接受的。

最佳答案

您的 SQL 更新不正确,因为您的问题是保持每个手机的每个最小促销

不确定你的表键,如果你在移动设备上有索引键,它会加速:

alter table promotional add key (mobile)

然后运行:

UPDATE promotional AS a
JOIN promotional AS b
ON a.mobile = b.mobile
AND a.promoid < b.promoid
AND a.mobile != ''
SET b.message_sent_status = ''

我的测试表有 33840 行,上面的 SQL 需要 0.5 秒

enter image description here

我做了另一个测试,163,840 行需要 16.4 秒,非常快:

enter image description here

关于更新重复行的 MySql 查询非常慢。建议需要加快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39195799/

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