我有一個相當少量數據(25k行)的文章表。該表具有已發佈的列(布爾值),需要根據外部源的數據狀態進行更新。來自不同表格的MySQL更新狀態
首先我在所有文章中設置published = 0。然後,我將訂閱源數據加載到只包含文章ID和發佈= 1的臨時表中。我想將發佈狀態重新設置爲臨時表中具有ID的所有文章中的一個(臨時表只包含已發佈的文章 - 默認情況下,如果它不在Feed中,則需要取消發佈)。
現在,我使用這個:
UPDATE articles a
LEFT JOIN data_temp b
ON a.id = b.id
SET a.published = 1
WHERE b.id IS NOT null
這工作,但它確實慢((如200)秒的慢我的開發服務器上)。看起來好像有一種方法可以很快做到這一點。感謝幫助。
你爲什麼要使用LEFT JOIN?此外,臨時表是否包含任何已發佈= 0? – Jai 2011-05-19 21:52:29
該查詢與相關問題的描述不太一致。 – 2011-05-19 21:54:13
@ Jai--只有發表的文章纔會出現在臨時表中。 @ steve--不確定你的意思。 – julio 2011-05-19 22:08:31