집 >데이터 베이스 >MySQL 튜토리얼 >데이터베이스의 개인 그룹 내에서 주소 변경에 대한 고유 일련번호를 효율적으로 생성하려면 어떻게 해야 합니까?
데이터베이스 일련번호로 주소 변경 추적 간소화
데이터베이스 내에서 주소 변경을 관리하려면 각 수정 사항을 기록하기 위한 기록 테이블이 필요한 경우가 많습니다. 이 테이블에는 일반적으로 개인 ID, 각 주소 변경에 대한 일련 번호, 타임스탬프 및 이전 주소가 포함됩니다. 그러나 개인별로 시퀀스 번호를 자동으로 증가시키는 작업은 놀라울 정도로 복잡할 수 있습니다.
접근 단순화: 자동 증가 제약 조건 방지
종종 복잡한 솔루션으로 이어지는 자동 증가 시퀀스나 제약 조건을 사용하는 대신 표준 직렬(자동 증가) 또는 IDENTITY 열을 사용하는 더 간단한 방법이 있습니다.
<code class="language-sql">CREATE TABLE address_history ( address_history_id serial PRIMARY KEY, person_id INT NOT NULL REFERENCES people(id), created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP, previous_address TEXT );</code>
창 기능으로 일련번호 생성
이 테이블 구조를 통해 창 함수는 공백 없이 각 사람에 대한 일련 번호를 생성할 수 있는 우아한 솔루션을 제공합니다.
<code class="language-sql">CREATE VIEW address_history_nr AS SELECT *, ROW_NUMBER() OVER (PARTITION BY person_id ORDER BY address_history_id) AS adr_nr FROM address_history;</code>
이 보기는 쿼리 내에서 원하는 일련 번호(adr_nr
)를 제공하여 원본 테이블을 직접 대체하는 역할을 합니다.
효율성을 위한 데이터 모델 최적화
최적의 성능을 위해서는 다음과 같은 데이터 모델 개선을 고려하세요.
TIMESTAMP WITHOUT TIME ZONE
대신 TIMESTAMP WITH TIME ZONE
(또는 DATETIME
)을 사용하세요.previous_address
필드이면 충분하므로 별도의 address
및 original_address
열이 필요하지 않습니다. 이렇게 하면 저장 공간이 줄어들고 쿼리 속도가 향상됩니다.위 내용은 데이터베이스의 개인 그룹 내에서 주소 변경에 대한 고유 일련번호를 효율적으로 생성하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!