개발은 하는건가..

[SQL] UPDATE 시 다른 테이블과 조인 본문

SQL Query

[SQL] UPDATE 시 다른 테이블과 조인

수동애비 2023. 9. 15. 12:26
반응형

collectData 에는 200만건의 데이터 abnormalLog 에는 70건의 데이터가 존재

abnormalLog  의  meterStatus = -1 인 데이터는 30건이며  이 데이터에 해당하는 dataFKey 필드는 collectData .pKey 에 해당하며  collectData 에 이 데이터들을 업데이트할려고 할때 아래와 같이 했더니 40초 가까이 소요됨.

SELECT * 
FROM collectData 
WHERE pKey IN (SELECT dataFKey FROM abnormalLog WHERE meterStatus = -1);
--> 16ms 소요

UPDATE collectData SET meterValue = -1;
WHERE pKey IN (SELECT dataFKey FROM abnormalLog WHERE meterStatus = -1);
--> 39초 소요

WHERE IN + subQuery 가 성능이 안좋다고는 하지만 이 정도일 줄은....
그래서 아래와 같이 UPDATE  JOIN 할 결과 1ms 만에 처리됨.

UPDATE collectData A
INNER JOIN abnormalLog B ON A.pKey = B.dataFKey 
SET A.meterValue = -1
WHERE B.meterStatus = -1;

==> 1ms 소요

오늘의 교훈 IN 안에는 subQuery 를 쓰지 말자

Comments