>  기사  >  데이터 베이스  >  MySQL에서 기본 키가 아닌 자동 증가 열이 존재할 수 있습니까?

MySQL에서 기본 키가 아닌 자동 증가 열이 존재할 수 있습니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-02 01:20:02832검색

Can Auto-Increment Columns Exist Without Being the Primary Key in MySQL?

잘못된 테이블 정의 오류 해결: 자동 증가와 기본 키의 균형 조정

이 시나리오에는 id 열이 시각적 개체에 대한 자동 증가 필드 역할을 하는 MySQL 테이블이 포함됩니다. 편의상 memberid 열은 실제 고유 키 역할을 합니다. 그러나 PRIMARY KEY(memberid)로 테이블을 정의하려고 하면 자동 열이 하나만 있을 수 있고 키여야 한다는 오류(1075)가 발생합니다.

오류 해결: 자동 증가 유지 및 고유 키

이 문제를 해결하려면 인덱스(키)가 정의된 경우 PRIMARY KEY가 아닌 자동 증가 열을 가질 수 있습니다. 수정된 테이블 정의는 다음과 같습니다.

<code class="sql">CREATE TABLE members (
  id int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  memberid VARCHAR(30) NOT NULL,
  `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  firstname VARCHAR(50) NULL,
  lastname VARCHAR(50) NULL,
  PRIMARY KEY (memberid),
  KEY (id)                          # or: UNIQUE KEY (id)
) ENGINE = MYISAM;</code>

id 열에 KEY 또는 UNIQUE KEY 인덱스를 추가하면 memberid 열이 기본 키가 되는 동안 자동 증가 기능이 유지되므로 memberid 값.

최적의 접근 방식 선택: 성능과 공간의 균형

최선의 선택은 성능과 디스크 공간의 상대적 중요성에 따라 달라집니다. 성능이 가장 중요한 경우 자동 증가 ID 열을 유지하고 memberid에 대한 인덱스를 사용하면 균형이 유지됩니다.

  • 자동 증가 ID는 효율적인 정렬 및 범위 쿼리를 제공합니다.
  • memberid의 인덱스는 고유한 멤버 식별자를 사용하여 빠른 조회를 보장합니다.

그러나 디스크 공간이 중요한 문제인 경우 id 열을 모두 제거하고 memberid 열을 기본 키와 자동으로 모두 사용하는 것이 좋습니다. -증분 필드. 이 접근 방식은 향상된 공간 활용을 위해 일부 성능을 희생합니다. 궁극적으로 성능과 공간 사이의 선택은 애플리케이션의 특정 요구 사항에 따라 달라집니다.

위 내용은 MySQL에서 기본 키가 아닌 자동 증가 열이 존재할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.