我正在尝试运行此查询,并且正在更新的表大约有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数据库上进行了优化。
答案 0 :(得分:0)
您正在对供应商编号进行OR
,我首先要确保您在两个表上都有供应商编号索引。
在我看来,其他列已经有了索引。
答案 1 :(得分:0)
要索引的列是where子句中的引用。
考虑添加以下内容:
根据Darhazer的输入:
考虑添加以下一项或多项: