2012-10-24 2 views
1

"이메일 주소"및/또는 "사용자 이름"unique 필드를 포함하는 "사용자"테이블을 만들고 싶습니다. int usigned auto_incrementprimary key으로 추가해야합니까?PRIMARY KEY 선택

또 다른 unique 필드가있는 테이블에서 "id"필드를 사용하는 교과서 예제를 보았 기 때문에 묻습니다.

+0

당신은 할 필요가 없지만 항상 그렇습니다. – DickieBoy

+0

응용 프로그램에 따라 전자 메일에 고유 한 제약 조건을 적용하지 않을 수도 있습니다. – Kermit

답변

4

예, 좋습니다.

  1. 다른 테이블의 외래 키로 사용합니다.
  2. 키를 고유하게 유지하려는 경우 (사용자 이름을 변경하려는 경우)
  3. 키를 인덱싱하려면 varchar보다 인덱스가 숫자 유형에 비해 훨씬 작아야합니다.
+0

"userName"필드를 다른 테이블의 외래 키로 사용할 수없는 이유는 무엇입니까? – MTVS

+0

@csstd 문자열이 검색 및 색인을 수행하고 정수보다 느립니다. – Kermit

1

당신은 덜 성능이 좋은 것 VARCHAR 열 데이터 유형을 사용하여 테이블을 인덱싱 이후 userId 열을 사용합니다.

성능을 위해서는 INT을 사용하는 것이 좋습니다. 그들은 더 적은 공간을 차지하며 더 중요한 것은 비교하기가 훨씬 빠릅니다.

INT 비교는 하나의 CPU 명령에서 실행할 수 있습니다. VARCHAR 또는 CHAR의 경우 각 문자를 차례로 비교해야합니다. 그것은 모든 PK 검색을 더 빠르게 만듭니다. 조인 테이블이 있으면 모든 조인 선택이 PK에 대해 조회됩니다.

관련 문제