我試圖更新使用連接基於另一個表的字段的字段:加快更新速度慢查詢
UPDATE transactions
JOIN products ON products.link = transactions.product_id
SET transactions.user_id = products.user_id
WHERE transactions.user_id != products.user_id
然而,這走的是一條很長的時間(超過15分鐘)。產品有10K行,交易約有90K行。無論如何,我可以優化我的查詢?
交易表:
id int(11)
transaction_id varchar(255)
user_id int(11)
product_id varchar(50)
產品表:
id int(11)
user_id int(11)
link varchar(45)
加入兩個不同大小的varchar字段需要每次更新的完整表掃描。沒有其他方式來加入表格嗎? –
@DavidColwell很遺憾,沒有其他方法可以加入。我擔心這可能與此有關。我可以並將在未來更改連接字段以使用INT。但我需要先執行此更新。查詢本身是否正確? – Abs
我不會重複這些結果,但嘗試@ Mari的方法...可能會有所幫助... 將來,請用這種方式來看待它。如果事務已經有一個用戶ID,並且一個事務有一個產品,那麼產品不需要一個用戶ID(除非產品有一個用戶ID,因爲它最初是創建產品的用戶) –