[SQLite] 인덱스
SQLite에서 CREATE INDEX
문은 테이블의 특정 열(또는 열들의 조합)에 대한 인덱스를 생성하여 데이터 검색 성능을 향상시키는 데 사용됩니다. 인덱스는 데이터베이스에서 데이터를 더 빠르게 찾을 수 있도록 도와주며, 특히 큰 데이터 집합에서의 조회, 조인, 그룹화 작업의 효율을 크게 개선할 수 있습니다.
CREATE INDEX idx_employee_name ON Employees (Name);
이 예시는 Employees
테이블의 Name
열에 대한 인덱스를 생성합니다. 이 인덱스는 Name
열을 기준으로 직원 데이터를 더 빠르게 검색할 수 있게 해줍니다.
UNIQUE INDEX
UNIQUE INDEX
는 인덱스된 열(들)의 각 값이 테이블 내에서 유니크함을 보장합니다. 즉, 중복된 값을 가질 수 없습니다. 이는 데이터의 무결성을 유지하는 데 유용합니다.
CREATE UNIQUE INDEX idx_unique_employee_id ON Employees (EmployeeID);
이 예시는 Employees
테이블에서 EmployeeID
열이 유니크함을 보장하는 인덱스를 생성합니다. 만약 EmployeeID
열에 중복된 값이 삽입되려고 하면, SQLite는 에러를 발생시킵니다.
UNIQUE INDEX
는 테이블을 생성할 때 UNIQUE
제약 조건을 사용하여도 동일한 효과를 얻을 수 있습니다.
오름차순/내림차순
인덱스를 생성할 때, ASC
(오름차순, 기본값) 또는 DSC
(내림차순)을 명시하여 인덱스의 정렬 순서를 지정할 수 있습니다. 이는 인덱스를 통한 검색 또는 정렬 작업의 성능에 영향을 줄 수 있습니다.
CREATE INDEX idx_employee_age_asc ON Employees (Age ASC);
CREATE INDEX idx_employee_age_dsc ON Employees (Age DESC);
첫 번째 예시는 Age
열에 대해 오름차순으로 정렬된 인덱스를 생성하고, 두 번째 예시는 같은 열에 대해 내림차순으로 정렬된 인덱스를 생성합니다. 이를 통해 Age
열을 기준으로 데이터를 조회하거나 정렬할 때 성능이 개선될 수 있습니다.
인덱스와 성능
인덱스는 데이터 조회 성능을 크게 향상시킬 수 있지만, 인덱스가 많은 경우 데이터 삽입, 삭제, 업데이트 작업의 성능에 부정적인 영향을 줄 수 있습니다. 인덱스는 저장 공간을 추가로 사용하므로, 필요한 경우에만 인덱스를 생성하는 것이 좋습니다.
인덱스 삭제
DROP INDEX
문을 사용하여 테이블의 인덱스를 삭제할 수 있습니다.
DROP INDEX idx_employee_name;