SQLite-인덱스
인덱스는 데이터베이스 검색 엔진이 데이터 검색 속도를 높이는 데 사용할 수있는 특수 조회 테이블입니다. 간단히 말해서index테이블의 데이터에 대한 포인터입니다. 데이터베이스의 색인은 책 뒷면의 색인과 매우 유사합니다.
예를 들어, 특정 주제에 대해 논의하는 책의 모든 페이지를 참조하려면 먼저 색인을 참조하십시오. 색인은 모든 주제를 알파벳순으로 나열한 다음 하나 이상의 특정 페이지 번호를 참조합니다.
인덱스는 SELECT 쿼리 및 WHERE 절의 속도를 높이는 데 도움이되지만 UPDATE 및 INSERT 문을 사용하면 데이터 입력 속도가 느려집니다. 인덱스는 데이터에 영향을주지 않고 생성하거나 삭제할 수 있습니다.
인덱스 생성에는 인덱스의 이름을 지정하고, 테이블과 인덱싱 할 열을 지정하고, 인덱스가 오름차순인지 내림차순인지 여부를 나타내는 CREATE INDEX 문이 포함됩니다.
인덱스는 인덱스가있는 열 또는 열 조합의 중복 항목을 방지한다는 점에서 UNIQUE 제약 조건과 유사하게 고유 할 수도 있습니다.
CREATE INDEX 명령
다음은 기본 구문입니다. CREATE INDEX.
CREATE INDEX index_name ON table_name;
단일 열 인덱스
단일 열 인덱스는 하나의 테이블 열만을 기반으로 생성되는 인덱스입니다. 기본 구문은 다음과 같습니다.
CREATE INDEX index_name
ON table_name (column_name);
고유 인덱스
고유 인덱스는 성능뿐만 아니라 데이터 무결성에도 사용됩니다. 고유 인덱스는 테이블에 중복 값을 삽입하는 것을 허용하지 않습니다. 기본 구문은 다음과 같습니다.
CREATE UNIQUE INDEX index_name
on table_name (column_name);
복합 색인
복합 인덱스는 테이블의 두 개 이상의 열에 대한 인덱스입니다. 기본 구문은 다음과 같습니다.
CREATE INDEX index_name
on table_name (column1, column2);
단일 열 인덱스 또는 복합 인덱스를 만들지 여부에 관계없이 쿼리의 WHERE 절에서 필터 조건으로 매우 자주 사용할 수있는 열을 고려하십시오.
열이 하나만 사용되는 경우 단일 열 인덱스를 선택해야합니다. WHERE 절에서 필터로 자주 사용되는 열이 두 개 이상있는 경우 복합 인덱스가 최선의 선택입니다.
암시 적 인덱스
암시 적 인덱스는 개체가 생성 될 때 데이터베이스 서버에서 자동으로 생성되는 인덱스입니다. 기본 키 제약 조건 및 고유 제약 조건에 대해 인덱스가 자동으로 생성됩니다.
Example
다음은 급여 열에 대한 COMPANY 테이블에 인덱스를 생성하는 예입니다.
sqlite> CREATE INDEX salary_index ON COMPANY (salary);
이제 다음을 사용하여 COMPANY 테이블에서 사용할 수있는 모든 인덱스를 나열하겠습니다. .indices 다음과 같이 명령-
sqlite> .indices COMPANY
그러면 다음 결과가 생성됩니다. 여기서 sqlite_autoindex_COMPANY_1 은 테이블 자체가 생성 될 때 생성 된 암시 적 인덱스입니다.
salary_index
sqlite_autoindex_COMPANY_1
다음과 같이 모든 인덱스 데이터베이스를 나열 할 수 있습니다.
sqlite> SELECT * FROM sqlite_master WHERE type = 'index';
DROP INDEX 명령
SQLite를 사용하여 인덱스를 삭제할 수 있습니다. DROP명령. 성능이 느려지거나 향상 될 수 있으므로 인덱스를 삭제할 때주의해야합니다.
다음은 기본 구문은 다음과 같습니다-
DROP INDEX index_name;
다음 문을 사용하여 이전에 만든 인덱스를 삭제할 수 있습니다.
sqlite> DROP INDEX salary_index;
인덱스는 언제 피해야합니까?
인덱스는 데이터베이스의 성능을 향상시키기위한 것이지만 피해야하는 경우가 있습니다. 다음 지침은 인덱스 사용을 재고해야하는시기를 나타냅니다.
인덱스는-
- 작은 테이블.
- 대규모 일괄 업데이트 또는 삽입 작업이 빈번한 테이블.
- 많은 수의 NULL 값을 포함하는 열입니다.
- 자주 조작되는 열입니다.