[英]Optimize MySQL UPDATE Query
我正在尝试运行此查询,正在更新的表大约有10,000行。 该查询需要花费很长时间才能执行,以至于我什至不必费心等待返回。
在几个小时内,该表将有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数据库上进行了优化。
您正在对供应商编号进行“ OR
”操作,首先要确保两个表上的供应商编号都有索引。
在我看来,其他列已经应该具有索引。
要索引的列是where子句中的引用。
考虑添加以下内容:
根据Darhazer的输入:
考虑添加以下一项或多项:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.