Postgresql을 사용하면 원하는 경우 다음과 같이 열 그룹 대신 열 그룹을 사용하여 기본 키를 정의할 수 있습니다.
PRIMARY KEY(a_id, b_id)
하지만 이 정의에서 열의 순서가 중요한가요? 위와 아래 사이에 실제적이거나 실제적인 차이점이 있습니까?
PRIMARY KEY(b_id, a_id)
문서에서는 이 문제를 직접적으로 다루지 않습니다. 이는 순서가 중요하지 않아야 함을 의미하며, information_catalog 테이블을 쿼리할 때 매개변수 순서의 차이를 확인할 수 있는 항목이 없습니다.
그러나 \d
대체 정의를 사용하여 두 테이블에 명령을 사용하면 출력에 설명된 열 순서가 변경됩니다. 분명히 기본 키 정의의 순서를 유지하는 것이 있지만 pg_catalog
이는 두 정의 사이에 기능적 차이가 전혀 없음을 의미합니까?
감사합니다
답변1
하지만 이 정의에서 열의 순서가 중요한가요? 위와 아래 사이에 실제적이거나 실제적인 차이점이 있습니까?
PRIMARY KEY
기본 UNIQUE
b-트리 인덱스가 해당 순서의 속성으로 생성되고 인덱스 조회 효율성에 영향을 준다는 점에서 열 순서는 중요합니다. 일반적으로 가장 선택적인 속성을 먼저 원합니다. 이는 성능에만 영향을 미치며 쿼리의 의미는 변경되지 않습니다.
없다의미론적차이는 을 UNIQUE (a, b)
의미하기 때문입니다 UNIQUE (b,a)
.