MySQL에 중복 행을 삽입할 때 자동 증가 간격을 방지하려면 어떻게 해야 합니까?

Patricia Arquette
풀어 주다: 2024-11-23 02:56:09
원래의
596명이 탐색했습니다.

How Can I Prevent Auto-Increment Gaps When Inserting Duplicate Rows in MySQL?

MySQL 중복 삽입 시 자동 증가 방지

테이블에 중복 행을 삽입하면 MySQL의 자동 증가 메커니즘으로 인해 예기치 않은 동작이 발생할 수 있습니다. MySQL 5.1.49에서는 INSERT IGNORE 문을 사용해도 자동 증가 ID가 계속 증가합니다. 이로 인해 ID 순서에 바람직하지 않은 공백이 발생할 수 있습니다.

이 문제를 해결하려면 다음 전략을 사용할 수 있습니다.

  1. 삽입 전 선택: 시도하기 전 삽입하려면 SELECT 문을 실행하여 중복 행이 이미 있는지 확인합니다. 그렇다면 삽입을 건너뛸 수 있습니다. 그러나 이 접근 방식은 큰 테이블의 경우 비효율적일 수 있습니다.
  2. 하위 쿼리가 포함된 INSERT: INSERT IGNORE 대신 다음 수정된 INSERT 문을 사용하세요.
INSERT INTO tablename (tag)
SELECT $tag
FROM tablename
WHERE NOT EXISTS(
    SELECT tag
    FROM tablename
    WHERE tag = $tag
)
LIMIT 1
로그인 후 복사

이 문은 먼저 태그가 테이블에 이미 존재하는지 확인합니다. 그렇지 않으면 자동 증가 메커니즘을 트리거하지 않고 행이 삽입됩니다. 하위 쿼리는 삽입이 한 번만 발생하도록 보장합니다.

  1. 복합 고유 키: 여러 열에 복합 고유 키를 생성하는 것을 고려해 보세요. 이렇게 하면 중복 행이 삽입되지 않으므로 중복 항목을 수동으로 확인할 필요가 없습니다.

이러한 솔루션은 모든 시나리오에 적합하지 않을 수 있다는 점에 유의하는 것이 중요합니다. 성능이 중요하다면 별도의 테이블을 사용하여 고유한 값을 저장하고 이를 기본 테이블에서 참조하는 등 다른 옵션을 평가해야 할 수도 있습니다.

위 내용은 MySQL에 중복 행을 삽입할 때 자동 증가 간격을 방지하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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