아래에 정의 된 두 개의 테이블이 있습니다.인덱싱 및 외래 키
Create table tickets (id long not null,
reseller long not null,
constraint pk_lock primary key (id));
Create table ticketRegistrations (id long not null,
customer long not null,
constraint fkTicketRegistrationTicket
foreign key (id) references tickets (id) on update cascade);
클라이언트는 티켓을 입력 할 수 있습니다 (따라서 기본 키에 대한 자동 증가 없음). id는 ticketregistrations 테이블의 Primary 키와 FOREIGN KEY이므로 무결성 제약 조건과 모든 재즈가 있습니다. 내가 겪은 문제점은 티켓 ID (즉, 00070)로 0을 채우는 것을 허용하는 기능 요청입니다. 이제 정수는 제 지식이 담긴 제로 패딩으로 저장 될 수 없습니다.
내가 해결할 수있는 해결책은 ticketID varchar (8) not column을 티켓 테이블에 추가하고 두 테이블 모두에 대한 실제 ID를 서로 게이트 키로 사용하는 것입니다. 티켓 등록 테이블의 외래 키는 티켓 ID를 가리킨다.
내가 가진 질문은 효율성과 속도에 관한 것입니다. 이전에는 시스템 내에 티켓 등록을 추가 할 수 있었고 데이터베이스는 추가시 무결성 제약 조건을 수행하여 동일한 ID를 가진 티켓이 데이터베이스 내에 있는지 확인했습니다. 이제 색인이 생성 될 ID에 대한 varchar 문자열이 생겼습니다.
고객이 티켓을 등록하면 티켓 표에서 ticketid varchar를 유지하고 ticketregistration 테이블 (또한 varchar (8)) 내에서 ticketid의 외래 키를 사용하는 것이 더 쉬울까요?
ticketregistrations 내에 ticketidvarchar (8)가 없으면 ticketregistrations 테이블의 기본 키로서 외래 키를 티켓 테이블에 보관하고 티켓 테이블 내의 ticketid를 먼저 확인하여 값을 검색하십시오 , ticketregistrations 내의 행에 그것을 입력?
이렇게하면 ticketsregistrations 테이블에 삽입하기 전에 티켓 테이블에서 인덱스 된 varchar 검색이 만들어집니다.
내 초기 솔루션은 참조 무결성이 문제를 처리 했으므로 필요하지 않았습니다.
검색 시간이 걱정됩니다.
어떤 데이터베이스 시스템입니까? –