Notice
Link
- Today
- Total
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 시간대 테이블생성
- c언어
- Back 키 클릭 감지
- MySQL
- 터치좌표 view
- 스크롤적용
- 피쉬랜드
- MariaDB
- springboot
- ffmpeg
- CSS
- 파티션 빠른 삭제
- CentOS
- SQL
- springboot 재가동
- mybatis exception
- rn
- 가변영역 스크롤
- 코드로 서버 재실행
- reactnative
- sql exception
- view 획득
- group by
- MFC
- 시간대별 통계
- vc++
- kill -9
- pid 찾아 kill
- 말줌임 CSS
- Activity 전체화면
Archives
개발은 하는건가..
[SQL] UPDATE 시 다른 테이블과 조인 본문
반응형
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 를 쓰지 말자
'SQL Query' 카테고리의 다른 글
[SQL] DUAL 을 이용한 JOIN 용 시간대 테이블 생성 (0) | 2025.01.08 |
---|---|
SQL 시간대 별 그룹 쿼리 (0) | 2025.01.08 |
DB 계정 생성과 읽기 전용 권한 설정 (0) | 2023.06.30 |
[SQL] 달의 첫날, 마지막날 구하기 (0) | 2023.05.23 |
[SQL] STR_TO_DATE 로 문자열 날짜를 날짜 형태로 사용 (0) | 2023.04.20 |
Comments