1. INSERT IGNORE

    1. 저장하는 레코드의 PK나 유니크 컬럼의 값이 테이블에 이미 존재하는 경우
    2. 저장하는 레코드의 칼럼이 테이블의 컬럼과 타입이 맞지 않는 경우(예 VARCHAR → INT)
    3. INSERT IGNORE를 사용하면 해당 경우를 무시하고 다음 레코드를 처리
    4. 정확하게는 기존 INSERT의 경우 에러가 발생하지만 INSERT IGNORE를 사용하면 에러를 경고 수준의 메시지로 바꿔주고 다음 레코드를 수행
    5. 만약 PK, 유니크 컬럼이 있는 경우, 둘 중 하나만 중복되더라도 무시(IGNORE)함
    6. 타입이 맞지 않는 경우도 무시하게 되는데, NOT NULL컬럼에 NULL이 들어간 경우에는 기본값이 INSERT됨
    7. INSERT IGNORE 쿼리 예시
    INSERT IGNORE INTO salaries (emp_no, salary, from_date, to_date) VALUES
    	(10001, 60117, '1986-06-26', '1987-06-26'),
    	(10001, 62102, '1987-06-26', '1988-06-25'),
    	(10001, 66074, '1988-06-25', '1988-06-25');
    
  2. INSERT … ON DUPLICATE KEY UPDATE

    1. PK나 유니크 인덱스의 중복이 발생하면 UPDATE 문장의 역할을 수행하게 해줌
    2. REPLACE 문장도 비슷한 역할을 수행하지만, REPLACE는 DELETE + INSERT의 조합으로 작동
    3. 해당 쿼리는 날짜별로 집계되는 값을 관리하기에 적합
    4. 예시 코드
    INSERT INTO daily_statistic (target_date, stat_name, stat_value) 
    	VALUES (DATE(NOW()), 'VISIT', 1)
    	ON DUPLICATE KEY UPDATE stat_value=stat_value+1; 
    
  3. LOAD DATA

    1. RDBMS에서 데이터를 빠르게 적재할 수 있는 방법으로 자주 사용됨
    2. INSERT명령에 비해 호출 MySQL엔진과 스토리지 엔지의 호출 횟수를 최소화하기 때문에 매우 빠르다고도 할 수 있음(데이터가 아주 많지 않을 경우 LOAD DATA가 성능적으로 우수)
    3. LOAD DATA의 중요한 특징(단점)
      1. 단일 스레드로 실행
      2. 단일 트랜잭션으로 실행
    4. 많은 데이터를 사용하는 경우 여러 파일로 나누고 여러 트랜잭션으로 LOAD DATA를 수행하는 것이 좋다