我有一個MySQL表,有大約200萬個產品的一堆產品定價信息。我每天都必須更新這些信息,以便定價信息發生變化的任何產品[巨大的痛苦]。大型MySQL表每日更新?
我想知道處理這些變化的最佳方法是什麼,而不是像compare and update
運行的東西,而不是改變了任何產品?
愛任何意見,你可以提供
我有一個MySQL表,有大約200萬個產品的一堆產品定價信息。我每天都必須更新這些信息,以便定價信息發生變化的任何產品[巨大的痛苦]。大型MySQL表每日更新?
我想知道處理這些變化的最佳方法是什麼,而不是像compare and update
運行的東西,而不是改變了任何產品?
愛任何意見,你可以提供
對於批量更新,你絕對應該使用LOAD DATA INFILE
而不是小了很多更新語句。
首先,新的數據加載到一個臨時表:
LOAD DATA INFILE 'foo.txt' INTO TABLE bar (productid, info);
然後運行更新:
UPDATE products, bar SET products.info = bar.info WHERE products.productid = bar.productid;
如果你也想從你是同一個文件INSERT
新記錄您可以從SELECT INTO OUTFILE
中更新現有表中沒有匹配ID的所有記錄,然後使用LOAD DATA INFILE
將該outfile加載到您的產品表中。
我維護一個價格比較引擎,價格上百萬,我選擇每一行,我在源代碼中找到並單獨更新每一行。如果沒有行然後我插入。最好使用InnoDB事務來加快速度。
這一切都是通過一個知道如何解析源文件並更新表的PHP腳本完成的。
這完全取決於您如何檢測/跟蹤產品的更改。 – nnichols 2012-03-27 17:09:06
以及那是誠實問題的一部分 - 我不確定。我不關心歷史定價信息 - 只關於批量更新現有表格上的現有信息[或者肯定可能通過一些臨時克隆,比較和更新或其他方式] – Andy 2012-03-27 17:10:13
但是您如何獲取更改?他們來自哪裏?什麼是唯一標識符?你的桌子結構是什麼? – nnichols 2012-03-27 17:15:10