2017-01-17 84 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

相關問題