"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > MySQL에서 기본 키가 아닌 자동 증가 열이 존재할 수 있습니까?

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

2024-11-04에 게시됨
검색:111

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

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

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

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

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

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;

id 열에 KEY 또는 UNIQUE KEY 인덱스를 추가하면 memberid 열이 기본 키가 되는 동안 자동 증가 기능이 유지되므로 memberid 값을 기반으로 효율적인 쿼리가 가능합니다.

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

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

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

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

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3