[英]Inner join query running very slow with indexed table?
我在 MySQL 服務器上運行一個兩表內連接查詢,它非常慢,需要 3 個小時才能完成。
UPDATE table_A ta
JOIN table_B tb
ON ta.field1= tb.field1
AND ta.field2 = tb.field2
SET ta.field2 = tb.field2,
ta.field3 = tb.field3
WHERE tb.field5 = 'ABC'
table_A 有 650,000 行 table_B 有 100,000 行
兩個ta。 field1
, ta. field2
, tb. field1
, tb. field2
, tb field5
都被索引並顯示在 EXPLAIN 結果中。
知道如何讓它運行得更快嗎?
對於此查詢:
UPDATE `table_A` ta INNER JOIN
table_B tb
ON ta.`field1`= tb.`field1` AND ta.`field2` = tb.`field2`
SET ta.`field2` = tb.`field2`,
ta.`field3` = tb.`field3`
WHERE tb.`field5` = 'ABC';
假設新值與舊值相同(基於join
條件),則無需更新field2
。
這些索引方法之一應該最有效:
table_B(field1, field2, field5)
table_B(field5, field1, field2)
, table_A(field1, field2)
哪種效果更好取決於數據的性質。 但是,使用復合索引而不是每個字段上的單獨索引非常重要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.