我想我知道問題是什麼,但我需要一些幫助才能朝着正確的方向前進。更新沒有任何鍵/索引信息的大型MySQL表格
我有一個表'產品',我也有幾個temp_product表爲各種供應商。
這裏的目標是從適當的temp_product表中更新products表中的幾個字段。我的產品供應商爲我提供了一份包含所有庫存數據的CSV文件。最初我只是循環遍歷CSV並逐行更新,但這需要永遠,所以現在我使用LOAD DATA LOCAL INFILE將它加載到臨時表中。
我遇到的問題是UPDATE查詢需要永久運行,而且大部分時間MySQL只是完全崩潰。我希望能向你展示我的表格結構,有人可以幫我解決什麼樣的鍵/索引設置最適合?
我試過2個不同的更新查詢變化,但都沒有工作。
UPDATE product AS p, temp_product AS t
SET p.quantity = t.quantity,
p.ean = t.inventory,
p.cost = t.price,
p.date_modified = NOW()
WHERE p.sku = t.sku
-AND-
UPDATE temp_product AS t
INNER JOIN product AS p ON p.sku = t.sku
SET p.quantity = t.quantity,
p.ean = t.inventory,
p.cost = t.price,
p.date_modified = NOW()
這裏的結構,我的表中的問題:
temp_product
sku varchar(15) PRI
status varchar(2)
statusid int(11)
quantity int(11)
inventory varchar(15)
ETA varchar(25)
ETA_Note varchar(255)
price double(10,2)
產品
product_id int(11) PRI
model varchar(64)
sku varchar(64)
upc varchar(50)
ean varchar(50)
mpn varchar(64)
location varchar(128)
quantity int(4)
price decimal(15,4)
cost decimal(15,4)
status tinyint(1)
date_added datetime
date_modified datetime
我有一種感覺,我可以得到這個正常工作,如果我有正確的鍵/指標設置。我現在唯一設置的是主鍵,但是這些鍵在所有表中都不匹配。我對這一切都很陌生,所以任何幫助,將不勝感激。
爲了使事情更加複雜,我不確定是否有一些供應商使用相同的SKU,所以我想更新產品表WHERE sku = sku和location ='suppliername'。
感謝您的幫助!
編輯:減少了一點點的問題,最初有一個產品和supplier_product表更新,一旦我得到產品表工作,我可以從那裏拿它。
感謝您的幫助,這是我需要的答案。我其實只是想出了它,刷新了頁面,並看到了你的迴應。我的解決方案是在我的所有表格的SKU字段中添加索引(就像密鑰一樣)。查詢從30分鐘過去了幾秒鐘。 – user3712685
歡迎您,成功與您的工作:) – Ashalynd