programing

INSERT INTO SELECT는 매우 느리지만 INSERT 또는 SELECT는 여러 번 실행할 때 빠릅니다.

nicescript 2022. 10. 10. 20:30
반응형

INSERT INTO SELECT는 매우 느리지만 INSERT 또는 SELECT는 여러 번 실행할 때 빠릅니다.

다음과 같은 SQL이 있습니다.

INSERT INTO table1 (column1, column2) (
    SELECT column3, column4 FROM table2 WHERE column5 = 'value'
);
  • table1에는 3,500,000 행이 있습니다.
  • table2에는 90,000 행이 있습니다.
  • SELECT column3, column4 FROM table2 WHERE column5 = 'value'는 NO 레지스터(ZERO)를 반환하고 약 0.004초 걸립니다.
  • INSERT INTO table1 (column1, column2) VALUES ('value', 'value')~0.004초 걸립니다.

하지만 두 가지를 결합하면INSERT INTO SELECT위와 같이 스테이트먼트에는 최대 7.7초가 소요됩니다.설명이 있나요?해결책이 있을까요?

원본 테이블의 필드 유형이 데 데스티니 테이블과 다르기 때문에 SELECT를 사용하여 INSERT를 실행하면 성능이 저하될 수 있습니다.따라서 INSERT-SELECT가 실행 중일 때 SELECT의 값에 암묵적인 캐스트가 존재하므로 해당 값이 데스티니 테이블에서 유지될 수 있습니다.이러한 암묵적 캐스트는 최상의 성능 방법으로 만들어지지 않으며 값에서 직접 삽입하면 속도가 느려질 수 있습니다.

언급URL : https://stackoverflow.com/questions/67879774/insert-into-select-is-very-slow-but-insert-or-select-are-fast-when-running-sepa

반응형