> 데이터 베이스 > MySQL 튜토리얼 > MySQL에서 대량 삽입 후 자동 증가 ID를 효율적으로 검색하는 방법은 무엇입니까?

MySQL에서 대량 삽입 후 자동 증가 ID를 효율적으로 검색하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-12-01 19:22:10
원래의
517명이 탐색했습니다.

How to Efficiently Retrieve Auto-Increment IDs After Bulk Inserts in MySQL?

MySQL의 대량 삽입에서 자동 증가 ID 가져오기

데이터베이스 관리의 일반적인 작업 중 하나는 테이블에 여러 행을 삽입하고 각 행에 대해 생성된 자동 증가 ID를 검색합니다. 마지막으로 삽입된 ID를 검색하는 것은 LAST_INSERT_ID() 함수를 사용하여 간단하지만 대량 삽입의 경우 생성된 모든 ID의 배열을 얻는 데 어려움이 있습니다.

기존 방법: 임시 테이블을 통한 삽입

이전에는 임시 테이블에 새 ID를 삽입하고 하위 쿼리를 사용하여 다음을 수행하는 일반적인 기술이 있었습니다. 그것들을 검색하세요. 그러나 이 접근 방식에는 추가 단계가 필요하고 성능 오버헤드가 발생합니다.

InnoDB에서 LAST_INSERT_ID() 및 ROW_COUNT() 사용

최신 버전의 MySQL, 특히 InnoDB를 사용하는 버전 스토리지 엔진은 대량 삽입 ID를 검색하기 위한 대체 방법을 제공합니다. 이 방법은 ROW_COUNT()와 함께 LAST_INSERT_ID() 함수를 활용하여 할당된 자동 증가 값의 범위를 추출합니다.

절차:

  1. innodb_autoinc_lock_mode를 구성합니다. 시스템 변수를 0(전통) 또는 1(연속)로 설정합니다. 이렇게 하면 대량 삽입 시 자동 증가 값이 순차적으로 할당됩니다.
  2. 대량 삽입 문을 실행합니다.
  3. LAST_INSERT_ID()에서 첫 번째 ID를 검색합니다.
  4. 마지막 ID를 계산합니다. 첫 번째 항목에 ROW_COUNT() - 1을 추가하여 ID 아이디

예:

INSERT INTO `my_table` (`name`, `email`) VALUES
('John Doe', 'john.doe@example.com'),
('Jane Doe', 'jane.doe@example.com'),
('Peter Jones', 'peter.jones@example.com');

SET @first_id = LAST_INSERT_ID();
SET @last_id = @first_id + ROW_COUNT() - 1;

SELECT * FROM `my_table` WHERE `id` BETWEEN @first_id AND @last_id;
로그인 후 복사

혜택:

  • 임시 없음 테이블: 추가 삽입 및 하위 쿼리가 필요하지 않습니다. 작업.
  • 향상된 성능: 대량 삽입 ID를 검색하는 보다 효율적인 방법을 제공합니다.
  • InnoDB와의 호환성: InnoDB 기능 활용 대량 삽입 중에 순차적 ID 할당을 보장하는 스토리지 엔진.

위 내용은 MySQL에서 대량 삽입 후 자동 증가 ID를 효율적으로 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿