2017-01-17 57 views
1

我有一个客户的表,我需要更新和替换一个列(varchar)与一个id(整数)。我们称第一个表Customers和第二个产品 因此,我不想使用varchar(例如产品A),而是想要产品(外键)的id。产品均具有标识和产品名称的另一个表:最快的方法来比较和更新百万行

我已经试过这样:

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

但这需要时间looong,我需要一个更快的方法来做到这一点。 另外我试图设置customers.s_product(BTREE和FULLTEXT)的索引,但仍然没有改进。

回答

2

创建两个表指数为

产品(产品名称)&客户(s_product)

并执行以下查询

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

我需要一个id,而不是产品名称。所以应该是 'SET t1.s_product = t2.id WHERE t1.s_product = t2.productName' – harunB10

+0

你是对的,更新了答案:-) –

+0

查询现在运行了一个小时。与我的查询相比,速度没有提高。 :( – harunB10

相关问题