똥글이꺼
368
2019-05-16 11:40:58
1
70

mysql 질문


대량 인서트를 어떤 특정값만 셀렉트 한 데이터값 사이에 문자열을 포함하여 넣고 싶은데,

그냥 인서트하고 업데이트 하는것이 좋을까요?


아니면 대량인서트할때 CASE WHEN THEN END를 사용해서 하는게 좋을까요?


성능상 속도가 어느게 빠를까요?


0
0
  • 답변 1

  • 르매
    382
    2019-05-16 11:56:56 작성 2019-05-16 12:01:59 수정됨

    처음에 대량 인서트라고 하셔서 LOAD DATA INFILE 인가 했는데, INSERT ~ SELECT ~를 말씀하시는 것 같네요.

    그런 경우라면 SELECT 할 때 CASE 문으로 변경해서 INSERT 하는 것이 빠르다고 봐야겠죠.

    대량 인서트를 빠르게 수행하는데 있어서 중요한 것은.. INSERT 대상 테이블의 인덱스 상태입니다.

    PK 외에 다른 인덱스가 있다면.. 모두 삭제하고 INSERT한 후에 다시 인덱스를 생성하는 것이.. 전체 작업 시간을 단축하는 방법입니다. (SELECT  결과를 대상 테이블의 PK 순서로 미리 정렬하는 것도 도움이 됩니다)

    1
  • 로그인을 하시면 답변을 등록할 수 있습니다.