이 쿼리를 실행하려고하는데 업데이트되는 테이블의 행 수가 약 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 절을 사용하여 동일한 쿼리에 대해 explain을 실행하여 현재 상황을 확인합니다. –
@JamWaffles : 예, 내 뒤 틱을 좋아해요. 사람들은 사용하지 말라고 말하지만 무시합니다. mysql에서 처음 시작한 때와 내가 예약어를 사용하고 있었기 때문에 오류가 계속 발생했기 때문에 지금은 어디서나 역행했다. + 찾기/바꾸기를 원할 경우 도움이됩니다. – Drahcir