Gmail에서 볼 수있는 URL 아이디와 비슷한 16 진수 값을 비즈니스 키 (기본 키로 자동 증가 필드 외에도)로 구현할 응용 프로그램을 만들고 있습니다. . 나는 컬럼에 고유 한 제한 조건을 추가하고 원래 varchar 필드 검색에서 벗어나기 위해 bigint 값을 저장하려고 생각했지만이 필드가 고유한지 여부가 궁금합니다.고유 한 varchar 필드와 고유 bigint의 MySQL 성능
내부 조인은 자동 증가 필드를 사용하여 수행되며 16 진 값은 필터링을 위해 where 절에 사용됩니다.
정수로 값을 저장하기 위해 hex와의 변환을 수행하는 추가 작업에 varchar (x) 또는 char (x) 값을 저장하는 것만으로 어떤 종류의 성능이 저하 될 수 있습니까? 데이터베이스에? 추가적인 복잡성의 가치가 있습니까?
소수의 행 (50k)에 대한 빠른 테스트를 수행했으며 비슷한 검색 결과 시간을 가졌습니다. 큰 성능 문제가 있다면 그것은 선형입니까, 아니면 기하 급수적입니까?
저는 InnoDB를 엔진으로 사용하고 있습니다.
개인적으로 나는 실제로 피하려고합니다. 사용자 인터페이스의 GUID에 사용자를 표시합니다. 심지어 URL 줄. 그러나, 나는 그들을 내부적으로 사용하고 세션 *을 사용하거나 특정 코드를 사용하여 디스플레이 *를 잘라내는 것이 좋습니다. 그런 식으로 & item = 1이 내가 보여준 첫 번째 항목입니다 ... 내부적으로 GUID *를 가져옵니다. – Godeke