gpt4 book ai didi

mysql - 使用 LIKE 连接表时加快 Mysql UPDATE

转载 作者:行者123 更新时间:2023-11-29 13:41:49 25 4
gpt4 key购买 nike

下面是我的查询

UPDATE cdata AS gcd 
LEFT JOIN tar AS ap
ON gcd.dialled
LIKE CONCAT(ap.prefix, '%')
SET gcd.prefix=ap.prefix, gcd.destination1=ap.destination
WHERE gcd.prefix=0;

这似乎超时了,我想知道是否是 LIKE 正在这样做。 cdata 有大约 140000 条记录,它对 tar 的搜索大约有 25000 条记录。所以我猜 mysql 对 140000 条记录中的每条记录进行了 25000 次查找?

如果可能的话,我需要找到一种加快速度的方法。

感谢您的帮助

最佳答案

这有点hack,应该是更好的方法,也许使用UNION?将其分为 7 个查询,每个可能的 ap.prefix 长度 1 个:

UPDATE cdata AS gcd
JOIN tar AS ap
ON substring(gcd.dialled, 1, 3) = ap.prefix
SET gcd.prefix=ap.prefix, gcd.destination1=ap.destination
WHERE gcd.prefix=0
;
-- ...
UPDATE cdata AS gcd
JOIN tar AS ap
ON substring(gcd.dialled, 1, 9) = ap.prefix
SET gcd.prefix=ap.prefix, gcd.destination1=ap.destination
WHERE gcd.prefix=0
;

运行所有查询,它应该在合理的时间内更新您的所有数据。 (注意:我切换到 JOIN 而不是 LEFT JOIN 以避免将 NULL 放入之前为 0 的行中)。

关于mysql - 使用 LIKE 连接表时加快 Mysql UPDATE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17976189/

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