본문 바로가기

데이터베이스/oracle

Index 생성, 삭제, 조회

Oracle, MySQL, MariaDB, MSSQL에서의 인덱스 관련 명령어를 비교한 글입니다. 
인덱스 생성, 삭제, 이름 변경, 컬럼 변경 등의 기본 문법을 각각 설명하겠습니다.

 

 1. 인덱스 생성 (CREATE INDEX)

DBMS 기본 문법 예

Oracle CREATE INDEX idx_emp_name ON emp(name);
MySQL CREATE INDEX idx_emp_name ON emp(name);
MariaDB CREATE INDEX idx_emp_name ON emp(name);
MSSQL CREATE INDEX idx_emp_name ON emp(name);

 

* UNIQUE 인덱스가 필요할 경우:

CREATE UNIQUE INDEX idx_emp_email ON emp(email);

 2. 인덱스 삭제 (DROP INDEX)

DBMS 문법 예

Oracle DROP INDEX idx_emp_name;
MySQL DROP INDEX idx_emp_name ON emp;
MariaDB DROP INDEX idx_emp_name ON emp;
MSSQL DROP INDEX emp.idx_emp_name; 또는 DROP INDEX idx_emp_name ON emp;

 3. 인덱스 이름 변경 (RENAME INDEX)

DBMS 문법

Oracle ALTER INDEX idx_old_name RENAME TO idx_new_name;
MySQL / MariaDB 지원 안 됨 → 인덱스를 삭제 후 새로 생성해야 함
MSSQL EXEC sp_rename 'emp.idx_old_name', 'idx_new_name', 'INDEX';

 4. 인덱스 컬럼 수정 (변경 방법)

인덱스에 포함된 컬럼을 수정하는 기능은 없음기존 인덱스를 삭제하고 새로 생성해야 함.

-- 1. 기존 인덱스 삭제
DROP INDEX idx_emp_name ON emp;

-- 2. 새로운 컬럼으로 인덱스 재생성
CREATE INDEX idx_emp_name ON emp(name, dept);

 

* 대부분의 DBMS는 ALTER INDEX 컬럼 변경은 지원하지 않음.


 5. 복합 인덱스 (다중 컬럼 인덱스)

CREATE INDEX idx_emp_name_dept ON emp(name, dept_id);

 

* 모든 DBMS에서 거의 동일하게 동작함.
단, 컬럼 순서가 중요함 → name이 먼저, dept_id는 조건이 name일 때만 활용 가능.


 6. 기타 인덱스 유형 예시

유형 예시

비트맵 인덱스 (Oracle 전용) CREATE BITMAP INDEX idx_emp_gender ON emp(gender);
Fulltext 인덱스 (MySQL/MariaDB) CREATE FULLTEXT INDEX idx_emp_resume ON emp(resume);
Spatial 인덱스 (MySQL/MariaDB) CREATE SPATIAL INDEX idx_map ON map(location);
Clustered Index (MSSQL) CREATE CLUSTERED INDEX idx_emp_id ON emp(id);

 전체 요약

기능 Oracle MySQL/MariaDB MSSQL
생성 CREATE INDEX 동일 동일
삭제 DROP INDEX index_name DROP INDEX index_name ON table DROP INDEX table.index_name
이름변경 ALTER INDEX ... RENAME TO ❌ 미지원 sp_rename 사용
컬럼 수정 ❌ 삭제 후 재생성 ❌ 삭제 후 재생성 ❌ 삭제 후 재생성

 

반응형