반응형
하위 쿼리에서 WHERE를 삭제할 수 없습니다.
MariaDB 10.4.12를 사용하여 DELETE 스테이트먼트를 실행하려고 합니다.이 스테이트먼트는 서브쿼리를 기반으로 합니다.
DELETE FROM `mydb1`.`mytable1`
WHERE `my_id` IN (
SELECT `TABLE_ID` FROM `TABLES_CT`
WHERE `TABLE_NAME` = 'tableName'AND `TABLE_ACTION` IN ('D', 'U')
);
이 작업을 실행하면 30초 후에 타임아웃이 됩니다.information_schema.innodb_lockwaits 와 innodb_trx 를 보면, 같은 DELETE 스테이트먼트가 2개의 다른 스레드에서 차단되고 있습니다.
SELECT로 실행하면 1밀리초 안에 실행됩니다.
좋은 생각 있어요?
MySQL은 최적화하는 경향이 있다WHERE IN
형편없이동등한 JOIN 인터페이스를 사용합니다.
DELETE t1 FROM mydb1.mytable1 AS t1
JOIN TABLES_CT AS t2 ON t1.my_id = t2.TABLE_ID
WHERE t2.TABLE_NAME = 'tableName' AND t2.TABLE_ACTION IN ('D', 'U')
언급URL : https://stackoverflow.com/questions/61922394/unable-to-delete-where-in-subquery
반응형
'source' 카테고리의 다른 글
MySQL JOIN은 가장 최근의 행만 사용하시겠습니까? (0) | 2023.01.19 |
---|---|
프라이머리 키 없이 테이블을 만들고 프라이머리 키를 추가할 경우 프라이머리 키는 클러스터된 인덱스입니까? (0) | 2023.01.15 |
서버를 재부팅하지 않고 .env 변수 새로고침(Larabel 5, 공유 호스팅) (0) | 2023.01.15 |
피어에 의해 TCP 소켓이 정상적으로 닫힌 것을 I/O를 시도하지 않고 검출할 수 없는 이유는 무엇입니까? (0) | 2023.01.15 |
조타 도표에서 /docker-entrypoint-initdb.d에 액세스하는 방법 (0) | 2023.01.15 |