데이터베이스 최적화는 효율적인 쿼리 실행에 핵심적인 역할을 합니다. MariaDB의 CREATE INDEX 문법을 활용하면 데이터 검색 속도를 크게 개선할 수 있습니다. 이 글에서는 CREATE INDEX의 주요 기능, 문법, 그리고 활용 예시를 소개합니다.
목차
📌 CREATE INDEX란?
CREATE INDEX는 테이블의 한 개 이상의 열에 대해 인덱스를 생성하여 데이터 검색 속도를 향상시키는 SQL 명령어입니다. 특히 대규모 데이터베이스 환경에서 효율적인 쿼리 성능을 보장하는 데 유용합니다.
주요 기능:
- 유니크 인덱스: 중복 값을 방지합니다.
- 전체 텍스트 인덱스: 텍스트 검색에 최적화되어 있습니다.
- 공간 인덱스: 지리적 데이터 처리를 지원합니다.
🛠️ CREATE INDEX 문법
CREATE [OR REPLACE] [UNIQUE|FULLTEXT|SPATIAL] INDEX
[IF NOT EXISTS] index_name
[index_type]
ON tbl_name (index_col_name,...)
[WAIT n | NOWAIT]
[index_option]
[algorithm_option | lock_option];
주요 옵션 설명:
- index_type: BTREE, HASH, RTREE 등 다양한 유형의 인덱스를 선택할 수 있습니다.
- algorithm_option: INPLACE, COPY 등 인덱스를 생성할 때 사용할 알고리즘을 정의합니다.
- LOCK: SHARED, EXCLUSIVE 등의 잠금 옵션을 제공합니다.
🧑💻 CREATE INDEX 사용 예제
기본 인덱스 생성:
CREATE INDEX idx_name ON table_name (column_name);
유니크 인덱스 생성:
CREATE UNIQUE INDEX unique_idx ON employees (email);
IF NOT EXISTS 활용:
CREATE INDEX IF NOT EXISTS idx_name ON table_name (column_name);
OR REPLACE를 활용한 재생성:
CREATE OR REPLACE INDEX idx_name ON table_name (column_name);
🎯 CREATE INDEX 사용 시 주의사항
- 권한 요구: CREATE INDEX 문을 실행하려면 대상 테이블 또는 데이터베이스에 대한 INDEX 권한이 필요합니다.
- 메타데이터 잠금: 다른 연결이 테이블을 사용하는 경우, 잠금 해제까지 대기합니다.
- 제약 조건: PRIMARY KEY 생성은 CREATE INDEX가 아닌 ALTER TABLE로 처리해야 합니다.
🚀 MariaDB CREATE INDEX의 고급 기능
1. 온라인 DDL 지원
ALGORITHM 및 LOCK 절을 사용하여 데이터베이스 가동 중에도 인덱스를 추가할 수 있습니다.
2. 진행 상황 보고
MariaDB는 CREATE INDEX 명령어 실행 중 진행 상황을 표시합니다. 예를 들어, SHOW PROCESSLIST
명령어를 통해 작업 단계와 진행률을 확인할 수 있습니다.
3. WITHOUT OVERLAPS
애플리케이션 타임 테이블에서 겹치지 않는 기간 제약을 위한 인덱스를 생성할 수 있습니다..
'MySQL MariaDB > SQL 문법' 카테고리의 다른 글
MariaDB DECODE 함수에 대한 이해와 활용법 (0) | 2024.11.25 |
---|---|
MariaDB의 AES_ENCRYPT와 AES_DECRYPT 함수: 강력한 데이터 암호화 솔루션 (0) | 2024.11.24 |
MariaDB ROUTINES 테이블: 저장 프로시저와 함수 관리 가이드 (0) | 2024.11.23 |
MariaDB에서 CREATE PROCEDURE 사용법 (0) | 2024.11.22 |
MariaDB의 CREATE FUNCTION 사용법 (1) | 2024.11.20 |
MariaDB 이벤트 관리:CREATE EVENT (0) | 2024.11.19 |
MariaDB의 CREATE TABLE 문법 이해와 사용법 (0) | 2024.11.18 |
MariaDB `DROP ROLE` 명령어: 효율적 역할 관리의 모든 것 (3) | 2024.11.17 |
댓글