我試圖運行這個查詢,並且正在更新的表有大約10,000行。查詢需要很長時間才能執行,我甚至無法等待返回。優化MySQL UPDATE查詢
在幾個小時內,這個表格將有100,000行,所以它將比現在長10倍。任何人有任何想法來優化它?
UPDATE
`wpsapi4`.`product_details` AS `pd`,
`r2r`.`partmaster` AS `pm`,
`r2r`.`partpriceinv` AS `ppi`,
`r2r`.`manufacturer` AS `m`
SET
`pd`.`product_name`=`pm`.`ItemName`,
`pd`.`data_source`='R2R',
`pd`.`partmaster`=`pm`.`id`,
`pd`.`pu`=``.`ppi`.`DistributorPartNumberShort`,
`pd`.`description_raw`=`pm`.`ItemDescription`,
`pd`.`dealer_price`=`ppi`.`MSRP`,
`pd`.`weight`=`pm`.`Weight`,
`pd`.`vendor_name`=`m`.`ManufacturerName`
WHERE
(
`pm`.`ManufacturerNumberShort`=`pd`.`vendor_number`
OR
`pm`.`ManufacturerNumberLong`=`pd`.`vendor_number`
)
AND
`pm`.`id`=`ppi`.`DistributorPartNumberShort`
AND
`ppi`.`DistributorID`=2
AND
`pm`.`ManufacturerID`=`m`.`id`
如果你認爲它可能是與表的結構做的話,請這麼說,我真的不能改變結構在這一點上,但如果你知道在哪裏指標應該是那麼這將是巨大的。索引已經在r2r數據庫上進行了優化。
我這是很多反引號。 – Bojangles
您可以像優化select語句一樣優化更新語句。使用相同的表連接和where子句在相同的查詢上運行解釋以查看發生了什麼。 –
@JamWaffles:是的,愛我的背部蜱:),人們告訴我不要使用它們,但我忽略它們。我記得當我第一次開始使用mysql時,由於我使用了保留字,所以我一直存在錯誤,所以現在我反覆使用。 +它有助於如果我想查找/替換 – Drahcir