有誰知道什麼會更有效,並使用更少的資源:MySQL的性能:嵌套的插入/重複鍵VS多次更新
方法1 - 使用一個SELECT語句從一個表中獲取數據,然後遍歷它來在另一個表上執行多個UPDATE。例如。 (僞代碼,執行()運行查詢):
Query1_resultset = execute("SELECT item_id, sum(views) as view_count FROM tableA WHERE condition=1");
while(Query1_resultset as row) {
execute("UPDATE tableB SET view_count=row.view_count WHERE id=row.item_id");
}
方法2 - 使用一個單一的INSERT ... ON DUPLICATE KEY UPDATE語句嵌套SELECT語句。 E.G .:
INSERT INTO tableB (id, view_count) SELECT item_id, SUM(views) as view_count FROM tableA WHERE condition=1 ON DUPLICATE KEY UPDATE view_count=VALUES(view_count);
注意:tableB上的ID是主鍵。實際上不會有任何插入因爲我知道鑰匙將存在。所以這都是UPDATE。只需使用此語句即可傳遞單個查詢而不是多個查詢。
我真的很好奇,爲什麼要更高效。查詢的數量決定了其運行速度有多快?瓶頸在哪裏? 我正在尋找可縮放的東西(正在更新的行數每天都在增長)。
任何想法?
感謝