4

고유 제한 조건이 기본적으로 색인입니까? 그렇지 않은 경우 SELECT ... WHERE 절에서 고유 제한 조건이 색인 된 열과 동일한 성능 결과를 갖는가?MySQL의 고유 제한 사항

감사

답변

4

고유 제한 조건은 반드시 색인입니다. 일반적으로 "UNIQUE INDEX"로 정의합니다. 어떤 경우에도 고유 제한 조건을 효율적으로 구현하려면 인덱스가 필요하므로 단점이없는 것이 좋습니다.

2

제약 조건은 실제로 인덱스는 매우 다르다 : 그것은 단지의 MySQL이 당신을 위해 고유성을 적용하도록되어 있다고 말한다. 그러나 색인은 고유 할 수도 있지만 하드 디스크의 물리적 순서 나 열을 효율적으로 검색 할 수있는 추가 구조 (일반적으로 트리)에 관한 것입니다.

그러나이 모든 것을 (일반적으로 클러스터 된) 고유 색인을 정의하는 기본 키와 혼동 할 수 있습니다.

+0

그래서 내 테이블에 "전자 메일"열이 있다고 말하면서 몇 번이나 "select * * tbl from select * from 'something'같은 전자 메일을 보냅니다." " 이 열은 고유 한 열이지만 기본 키가 아닙니다. 그렇다면 색인을 생성하는 것이 성능면에서 더 좋을까요? –

+0

@ 카이 : 예, 색인을 사용하면 데이터를 읽을 때 성능이 향상됩니다 (쓰기 데이터가 방해받을 수 있음). 유일한 제약 조건은 테이블의 모든 행에 대해 고유 한 제약 조건이 정의 된 열의 값이 고유하다는 것을 의미합니다. 두 개의 전자 메일 열 값이 동일하지는 않습니다. –

1

고유 제한 조건은 무언가 (속성 값의 조합처럼)가 전체 관계 ("테이블")의 범위 내에서 고유해야한다는 사실을 표현하는 방법입니다.

이것은 LOGICAL 디자인 수준입니다.

색인은 이러한 제약 조건을 적용하는 데 도움이되는 유용한 수단 일 수 있습니다.

실제 디자인 수준입니다.

일부 DBMS 제품은 UNIQUE 제약 조건과 같은 특정 논리적 디자인 구조가있는 경우 일부 인덱스의 존재와 같은 특정 물리적 디자인 구문을 유추 할 수 있습니다. 다른 사람들은 그렇지 않을 수도 있습니다.

1

UNIQUE는에 인덱스 인 입니다. 그렇기 때문에 UNIQUE는 고유성을 적용하려는 필드에 인덱스가 있음을 나타냅니다.

+0

그래서 지금 다시 혼란스럽고, 다음과 같이 create table에 unique (email) 또는 unique index (email)를 넣어야합니까? –

0

고유 제한 조건을 사용하기 전에 기본 키 제약 조건을 확인하십시오.

기본 키 제약 조건은 고유 제약 조건과 not null 제약 조건을 선언하는 것입니다. 기본 키에 둘 이상의 C 럼이있는 경우, 각 C 럼은 널 (Null) 제한 조건을 갖지만 고유 제한 조건은 함 2 모 든 모든 C 럼에 적용됩니다.

기본 키를 선언하면 DBMS에서 색인을 생성합니다. 원하는 경우 인덱스를 삭제할 수 있지만 DBMS가 테이블 스캔을 수행하여 고유성을 검사 할 때 끔찍한 성능을 보게됩니다.

REFERENCES (외래 키) 제약 조건이 참조 무결성을 적용하는 동안 기본 키 제약 조건은 엔터티 무결성을 적용합니다. 함께 데이터 무결성을 보장하기 위해 먼 길을 간다.