2009-05-03 5 views
7

비교적 큰 DB 테이블 (700K 행)으로 프로젝트를 진행 중입니다.대형 테이블 용 MySQL 기본 키 열 유형

실수로 DB 스키마를 디자인하는 동안 만들었습니다. 행이 증가 할 때 ID의 열 유형 bigint (x)를 늘려야했습니다.

이제 bigint (44)입니다. 성능이 크게 저하 될 수 있다고 생각하여 높은 x 값을 설정하는 것을 두려워했습니다. 어쩌면 내가 틀렸어.

문제를 해결하는 데 도움을주십시오.

한 번 설정하고이 문제를 잊어 버릴 수있는 열 유형은 무엇입니까?

DB 스키마 디자인 분야에서 더 잘 배울 점은 무엇입니까?

답변

13

열을 BIGINT(44)으로 만들면 "44"가 표시 너비입니다. 저장할 수있는 값의 범위 나 검색 속도에 영향을주지 않습니다.

자동 증가 ID의 경우 UNSIGNED 숫자를 사용하고 싶습니다. BIGINT(44) UNSIGNED. 이렇게하면 값의 범위가 두 배가되고 일반적으로 좋은 점인 추가 제한 조건을 추가하게됩니다.

서명되지 않은 INT는 최대 4,294,967,295를 저장합니다. 서명되지 않은 BIGINT는 최대 18,446,744,073,709,551,615를 저장할 것이며, 곧 채울 것입니다.

최대 ID가 얼마나 빠르게 증가하는지 말하지 않습니다. 많은 행을 삽입하지 않으면 공간이 적으므로 UNSIGNED INT을 사용해야합니다.

1

기본 키는 기본적으로 서명되지 않습니다. 어쨌든, 기본 키에 음수를 사용하는 것은 기껏해야 눈살을 찌푸리게되며, 물건을 깰 수 있습니다.

+0

좀 구체적으로 알려주시겠습니까? "물건 나누기"는 꽤 모호합니다. 그것은 정확히 무엇을 깨는가? – Nobody