답변:
INTEGER PRIMARY KEY 열을 제외하고 UNIQUE 및 PRIMARY KEY 제약 조건은 데이터베이스에서 인덱스를 만들어 "CREATE UNIQUE INDEX"문과 같은 방식으로 구현합니다. 이러한 인덱스는 데이터베이스의 다른 인덱스와 마찬가지로 쿼리를 최적화하는 데 사용됩니다. 결과적으로 이미 UNIQUE 또는 PRIMARY KEY 제약 조건이 이미 적용되는 열 집합에서 인덱스를 만들 때 이점 (그러나 상당한 오버 헤드)이없는 경우가 많습니다.
sqlite_master
이름과 함께 시작하는 테이블 sqlite_autoindex_
.
UNIQUE
지수 (또는 UNIQUE
부모 / 참조 필드가 존재하지 않는 경우 (들)에 대한 제약); 되는 권장 아이 / 필드를 참조 (들) (일반적으로 고유하지 않습니다) 인덱스가 있는지 : 여기 참조
열이 INTEGER PRIMARY KEY로 표시되면 실제로 다른 PRIMARY KEY 또는 색인 값을 지정하여 수행 한 유사한 검색보다 약 2 배 빠릅니다 . 이 때문입니다:
... SQLite 테이블 내의 모든 행에는 테이블 내의 행을 고유하게 식별하는 64 비트 부호있는 정수 키가 있습니다. 특정 rowid를 가진 레코드를 검색하거나 지정된 범위 내의 rowid를 가진 모든 레코드를 검색하는 것은 다른 PRIMARY KEY 또는 색인 값을 지정하여 유사한 검색으로 빠르게 수행하십시오.
아래에 언급 된 한 가지 예외를 제외하고, rowid 테이블 에 단일 열로 구성된 기본 키가 있고 해당 열의 선언 된 유형이 대소 문자를 혼합하여 "INTEGER"인 경우 열은 rowid의 별명이됩니다.
이러한 열을 일반적으로 "정수 기본 키"라고합니다. 선언 된 유형 이름이 정확히 "INTEGER"인 경우 PRIMARY KEY 열은 정수 기본 키만됩니다. "INT"또는 "BIGINT"또는 "SHORT INTEGER"또는 "UNSIGNED INTEGER"와 같은 다른 정수 유형 이름은 기본 키 열이 rowid의 별명이 아닌 정수 선호도와 고유 색인을 가진 일반 테이블 열로 작동하게합니다.