通过以下步骤可以实现更快的子查询更新:
UPDATE table JOIN ( SELECT column1, column2 FROM lookup WHERE condition1 = value1 ) AS lookup ON table.lookup_column = lookup.column1 SET table.update_column = lookup.column2 WHERE table.some_condition = value2;
CREATE TEMPORARY TABLE temp_table ENGINE=MEMORY SELECT column1, column2 FROM table WHERE condition1 = value1;
CREATE TABLE temp_table ( column1 datatype1, column2 datatype2, column3 datatype3 );
INSERT INTO temp_table(column1, column2, column3) SELECT table.column1, lookup.column2, table.column3 FROM table JOIN lookup ON table.lookup_column = lookup.column1 WHERE table.some_condition = value1;
UPDATE table JOIN temp_table ON table.column1 = temp_table.column1 SET table.column2 = temp_table.column2;
注意:每种方法都有适用的场景,不能一概而论。因此,请始终测试您的解决方案并根据您的具体情况调整。