【发布时间】:2011-05-19 21:48:17
【问题描述】:
我有一个包含相当少量数据(25k 行)的文章表。该表有一个已发布的列(布尔值),需要根据来自外部提要的数据状态进行更新。
首先,我将所有文章的已发布 = 0。然后我将提要数据加载到一个临时表中,仅包含文章 ID 和发布 = 1。我想将发布状态设置回临时表中具有 ID 的所有文章的 1(临时表仅包含已发布的文章-- 默认情况下,如果它不在提要中,则需要取消发布)。
我现在正在使用这个:
UPDATE articles a
LEFT JOIN data_temp b
ON a.id = b.id
SET a.published = 1
WHERE b.id IS NOT null
这可行,但它真的很慢(比如我的开发服务器上慢了 200 秒)。似乎必须有一种方法可以真正快速地做到这一点。感谢您的帮助。
【问题讨论】:
-
你为什么使用左连接?此外,临时表是否包含已发布 = 0 的任何内容?
-
该查询与问题的描述不太相符。
-
@Jai-- 只有已发表的文章才会出现在临时表中。 @steve--不确定你的意思。
标签: mysql sql sql-update