Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL에서 자동 증분 ID 열의 조각화를 처리하는 방법은 무엇입니까?

<시간/>

번호를 다시 매길 때마다 문제가 있을 수 있습니다. 열에 대한 고유 ID를 선언해야 합니다.

MySQL 버전 5.6 InnoDB에서는 INSERT 문에 ID 열을 포함하여 auto_increment ID를 재사용할 수 있으며 원하는 특정 값을 제공할 수 있습니다.

상황은 다음과 같습니다 -

  • 숫자가 가장 높은 ID를 삭제할 때마다
  • MySQL 서버를 시작하고 중지할 때마다
  • 새 레코드를 삽입할 때마다

auto_increment 변수를 사용한 ID 자동 증가의 예

mysql> 테이블 UniqueAutoId 생성 -> ( -> id int auto_increment, -> Unique(id) -> ), 쿼리 확인, 영향을 받는 행 0개(0.45초)

테이블에 레코드 삽입하기.

mysql> insert into UniqueAutoId values();Query OK, 1개의 row가 영향을 받습니다(0.13초)mysql> insert into UniqueAutoId values();Query OK, 1개의 row가 영향을 받습니다(0.16초)mysql> insert into UniqueAutoId values(); 쿼리 OK, 영향을 받는 행 1개(0.07초)mysql> UniqueAutoId values()에 삽입; 쿼리 OK, 영향을 받는 행 1개(0.10초)mysql> UniqueAutoId values()에 삽입, 쿼리 OK, 영향을 받는 행 1개(0.10초) 

모든 기록을 표시합니다.

mysql> 선택 *UniqueAutoId;

다음은 출력입니다.

+----+| 아이디 |+----+| 1 || 2 || 3 || 4 || 5 |+----+5행 세트(0.00초)

레코드를 삭제하기 위해 DELETE 문을 사용했습니다. 여기서 id=5;

를 삭제합니다.
mysql> DELETE from UniqueAutoId where id=5;Query OK, 영향을 받는 행 1개(0.14초)

모든 기록을 표시합니다.

mysql> 선택 *UniqueAutoId;

다음은 출력입니다.

+----+| 아이디 |+----+| 1 || 2 || 3 || 4 |+----+4행 세트(0.00초)

테이블에서 레코드를 다시 삭제해 보겠습니다.

mysql> id=2인 UniqueAutoId에서 삭제, 쿼리 확인, 1개 행이 영향을 받음(0.15초)

다시, 테이블의 레코드를 표시합니다.

mysql> 선택 *UniqueAutoId;

다음은 출력입니다.

+----+| 아이디 |+----+| 1 || 3 || 4 |+----+3행 세트(0.00초
)

위의 결과는 조각화됩니다.