比较和更新milion行的最快方法

时间:2017-01-17 10:19:00

标签: mysql sql database

我有一个客户表,我需要更新并用id(整数)替换一列(varchar)。让我们调用第一个表Customers和第二个Products 因此,我想拥有该产品的id(外键),而不是拥有varchar(例如,产品A)。产品位于另一个具有id和productName的表中:

我试过这个:

UPDATE customers 
SET s_product = (SELECT id from products WHERE products.productName = customers.s_product)

但这需要花费很长时间,我需要一种更快的方法来做到这一点。 我也尝试在customers.s_product(BTREE和FULLTEXT)上设置索引,但仍然没有改进。

2 个答案:

答案 0 :(得分:2)

你可以在这里尝试加入声明

update customers as c join products as j on c.s_product = j.productName set c.s_product = j.id

参考:http://www.mysqltutorial.org/mysql-update-join/

答案 1 :(得分:2)

在两个表上创建索引

  

产品(productName)&客户(s_product)

执行以下查询

UPDATE customers t1, products t2
    SET t1.s_product = t2.id
    WHERE t1.s_product = t2.productName;