2016-10-24 4 views
2

빈 텍스트를 내 테이블에 저장할 수 없음을 확신하지는 않습니다. 따라서 도메인 유형을 만들었습니다 :Postgres 사용자 정의 도메인 유형 대 UNIQUE

CREATE DOMAIN non_empty_text AS TEXT CHECK(VALUE ~ '\S'); 그리고 non_empty_text로 모든 텍스트 유형을 변경했습니다.

지금까지 그렇게 좋았습니다. 하지만 형식을 다시 텍스트로 변경하고 빈 값이있는 UNIQUE 인덱스와 행을 만들면 더 효율적입니까?

+2

고유 인덱스는 완전히 다른 값으로 비어 있지 않은 값을 확인합니다. –

+0

기술적으로 예. 그러나 모든 금지 된 값을 가진 행을 만들면 더 이상 추가 할 수 없습니다. 분명히 끔찍한 추한 xD – velop

+0

검사 조건을 'VALUE <>' ''로 변경하여 더 빠르고 쉽게 읽을 수 있도록하십시오. –

답변

1

당신은 물론 이것을 벤치 마크 할 필요가 있지만, 당신은 당신의 접근 방식을 바꾸어야한다고 말하고 싶습니다.

현재 도메인 유형 로직은 메모리의 문자열을 평가합니다. 두 번째 방법은 인덱스에 액세스하고 캐시에있을 수도 있고 없을 수도있는 블록을 찾는 것입니다. 기억 장치에 접근하는 것은 일어나지 않더라도 모두 시간은 메모리 내 작업과 비교할 때 너무 비싸다. 이는 아마도 좋은 생각이 아니다.

+0

UNIQUE 인덱스를 실제로 추가하지 않는 것이 좋습니다. 실제로 필요하지 않으면 UNIQUE 인덱스를 추가하는 것이 좋습니다. – velop

+1

@velop 거의, 그래. – Mureinik

1

도메인에 대한 접근 방식이 올바른 것 같습니다. 고유 제한 조건의 대안은 흥미로운 아이디어이지만 조기 최적화라고 생각합니다.