본문 바로가기
MySQL MariaDB/SQL 문법

MariaDB CREATE INDEX: 인덱스 생성

by 쑤- IT, MySQL, MariaDB, DBeaver 2024. 11. 21.

데이터베이스 최적화는 효율적인 쿼리 실행에 핵심적인 역할을 합니다. MariaDB의 CREATE INDEX 문법을 활용하면 데이터 검색 속도를 크게 개선할 수 있습니다. 이 글에서는 CREATE INDEX의 주요 기능, 문법, 그리고 활용 예시를 소개합니다.

MariaDB CREATE INDEX: 인덱스 생성

목차


    📌 CREATE INDEX란?

    CREATE INDEX는 테이블의 한 개 이상의 열에 대해 인덱스를 생성하여 데이터 검색 속도를 향상시키는 SQL 명령어입니다. 특히 대규모 데이터베이스 환경에서 효율적인 쿼리 성능을 보장하는 데 유용합니다.

    주요 기능:

    1. 유니크 인덱스: 중복 값을 방지합니다.
    2. 전체 텍스트 인덱스: 텍스트 검색에 최적화되어 있습니다.
    3. 공간 인덱스: 지리적 데이터 처리를 지원합니다.

    🛠️ 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 사용 시 주의사항

    1. 권한 요구: CREATE INDEX 문을 실행하려면 대상 테이블 또는 데이터베이스에 대한 INDEX 권한이 필요합니다.
    2. 메타데이터 잠금: 다른 연결이 테이블을 사용하는 경우, 잠금 해제까지 대기합니다.
    3. 제약 조건: PRIMARY KEY 생성은 CREATE INDEX가 아닌 ALTER TABLE로 처리해야 합니다.

    🚀 MariaDB CREATE INDEX의 고급 기능

    1. 온라인 DDL 지원

    ALGORITHM 및 LOCK 절을 사용하여 데이터베이스 가동 중에도 인덱스를 추가할 수 있습니다.

    2. 진행 상황 보고

    MariaDB는 CREATE INDEX 명령어 실행 중 진행 상황을 표시합니다. 예를 들어, SHOW PROCESSLIST 명령어를 통해 작업 단계와 진행률을 확인할 수 있습니다.

    3. WITHOUT OVERLAPS

    애플리케이션 타임 테이블에서 겹치지 않는 기간 제약을 위한 인덱스를 생성할 수 있습니다..

    댓글