我試圖將av.UnitType設置爲ut.unittype中的值,只要三列匹配,並且我想知道該語句的哪些部分是這樣的是導致它採取這麼長時間:爲什麼這個更新查詢如此之慢,我該如何改進它
SET SQL_SAFE_UPDATES=0;
UPDATE `db`.`table_av` av, `db`.`table_ut` ut
SET av.UnitType = ut.unittype
WHERE TRIM(LEADING '0' FROM av.id) = ut.id
AND av.veh = ut.veh
AND av.date LIKE CONCAT('%', ut.Year);
在可以使查詢變慢的事情列表上,最糟糕的是「在比較中使用函數或計算字段值」...像TRIM()和CONCAT()這樣的函數;列表中還有「LIKE條件與領先的通配符」....像'% 「...在風格上,使用」逗號加入「符號已經過時並且幾十年不受歡迎 – Uueerdo
將其更改爲查找相關行的」SELECT「查詢,然後使用」EXPLAIN「查看查詢計劃在這兩個表的'veh'列中添加索引可能會有所幫助 – Barmar
這兩個表的模式是什麼?爲什麼一個ID的前導零和相關的一個沒有? –