고유 제한 조건이 기본적으로 색인입니까? 그렇지 않은 경우 SELECT ... WHERE
절에서 고유 제한 조건이 색인 된 열과 동일한 성능 결과를 갖는가?MySQL의 고유 제한 사항
감사
고유 제한 조건이 기본적으로 색인입니까? 그렇지 않은 경우 SELECT ... WHERE
절에서 고유 제한 조건이 색인 된 열과 동일한 성능 결과를 갖는가?MySQL의 고유 제한 사항
감사
고유 제한 조건은 반드시 색인입니다. 일반적으로 "UNIQUE INDEX"로 정의합니다. 어떤 경우에도 고유 제한 조건을 효율적으로 구현하려면 인덱스가 필요하므로 단점이없는 것이 좋습니다.
제약 조건은 실제로 인덱스는 매우 다르다 : 그것은 단지의 MySQL이 당신을 위해 고유성을 적용하도록되어 있다고 말한다. 그러나 색인은 고유 할 수도 있지만 하드 디스크의 물리적 순서 나 열을 효율적으로 검색 할 수있는 추가 구조 (일반적으로 트리)에 관한 것입니다.
그러나이 모든 것을 (일반적으로 클러스터 된) 고유 색인을 정의하는 기본 키와 혼동 할 수 있습니다.
고유 제한 조건은 무언가 (속성 값의 조합처럼)가 전체 관계 ("테이블")의 범위 내에서 고유해야한다는 사실을 표현하는 방법입니다.
이것은 LOGICAL 디자인 수준입니다.
색인은 이러한 제약 조건을 적용하는 데 도움이되는 유용한 수단 일 수 있습니다.
실제 디자인 수준입니다.
일부 DBMS 제품은 UNIQUE 제약 조건과 같은 특정 논리적 디자인 구조가있는 경우 일부 인덱스의 존재와 같은 특정 물리적 디자인 구문을 유추 할 수 있습니다. 다른 사람들은 그렇지 않을 수도 있습니다.
UNIQUE는에 인덱스 인 입니다. 그렇기 때문에 UNIQUE는 고유성을 적용하려는 필드에 인덱스가 있음을 나타냅니다.
그래서 지금 다시 혼란스럽고, 다음과 같이 create table에 unique (email) 또는 unique index (email)를 넣어야합니까? –
고유 제한 조건을 사용하기 전에 기본 키 제약 조건을 확인하십시오.
기본 키 제약 조건은 고유 제약 조건과 not null 제약 조건을 선언하는 것입니다. 기본 키에 둘 이상의 C 럼이있는 경우, 각 C 럼은 널 (Null) 제한 조건을 갖지만 고유 제한 조건은 함 2 모 든 모든 C 럼에 적용됩니다.
기본 키를 선언하면 DBMS에서 색인을 생성합니다. 원하는 경우 인덱스를 삭제할 수 있지만 DBMS가 테이블 스캔을 수행하여 고유성을 검사 할 때 끔찍한 성능을 보게됩니다.
REFERENCES (외래 키) 제약 조건이 참조 무결성을 적용하는 동안 기본 키 제약 조건은 엔터티 무결성을 적용합니다. 함께 데이터 무결성을 보장하기 위해 먼 길을 간다.
그래서 내 테이블에 "전자 메일"열이 있다고 말하면서 몇 번이나 "select * * tbl from select * from 'something'같은 전자 메일을 보냅니다." " 이 열은 고유 한 열이지만 기본 키가 아닙니다. 그렇다면 색인을 생성하는 것이 성능면에서 더 좋을까요? –
@ 카이 : 예, 색인을 사용하면 데이터를 읽을 때 성능이 향상됩니다 (쓰기 데이터가 방해받을 수 있음). 유일한 제약 조건은 테이블의 모든 행에 대해 고유 한 제약 조건이 정의 된 열의 값이 고유하다는 것을 의미합니다. 두 개의 전자 메일 열 값이 동일하지는 않습니다. –