使用 INNER JOIN 重写 UPDATE 查询而不使用 IN

发布于 2024-12-12 00:38:12 字数 257 浏览 0 评论 0原文

我有一个查询:

UPDATE table_1 set field_1 = 1 where field_2 IN 
(SELECT field_2 from table_2 where field_3 = 1)

但是,对于大型数据库(> 2000 毫秒),这需要很长时间。有没有办法使用 JOIN 重写此查询以避免使用 IN?

注意:field_1和field_3都有索引,但对查询没有帮助。这是使用MySQL。

I have a query:

UPDATE table_1 set field_1 = 1 where field_2 IN 
(SELECT field_2 from table_2 where field_3 = 1)

However this takes a LONG time with a large database (>2000ms). Is there anway to re-write this query using JOINs to get away from using IN?

NOTE: There are indexes on field_1, and field_3 however it doesn't help the query. This is using MySQL.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

最终幸福 2024-12-19 00:38:12
UPDATE table_1, table_2
    SET table_1.field_1 = 1
    WHERE table_1.field_2 = table_2.field_2
        AND table_2.field_3 = 1
UPDATE table_1, table_2
    SET table_1.field_1 = 1
    WHERE table_1.field_2 = table_2.field_2
        AND table_2.field_3 = 1
烟燃烟灭 2024-12-19 00:38:12

所需代码如下,

UPDATE t1 
set field_1 = 1 
from table_1 t1
join table_2 t2
    on t1.field_2 = t2.field_2
where t2.field_3 = 1

The required code is below,

UPDATE t1 
set field_1 = 1 
from table_1 t1
join table_2 t2
    on t1.field_2 = t2.field_2
where t2.field_3 = 1
长亭外,古道边 2024-12-19 00:38:12

测试了这段代码。

UPDATE table_1 t1 
 INNER JOIN table_2 t2 
  SET t1.field_1 = 1
WHERE t1.field_2 = t2.field_2
AND t2.field_3 = 1;

干杯!

Tested this code.

UPDATE table_1 t1 
 INNER JOIN table_2 t2 
  SET t1.field_1 = 1
WHERE t1.field_2 = t2.field_2
AND t2.field_3 = 1;

Cheers!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文