[MySQL] 14. 인덱스의 생성과 제거 문법(CREATE INDEX, DROP INDEX)

2022. 4. 9. 15:04·📟 Database/혼자 공부하는 SQL

인덱스를 생성하기 위해서는 CREATE INDEX 문을 사용해야 한다.

 

UNIQUE는 중복이 안 되는 고유 인덱스를 만드는 것인데, 생략하면 중복이 허용된다. CREATE UNIQUE로 인덱스를 생성하려면 기존에 입력된 값들에 중복이 있으면 안 된다. 그리고 인덱스를 생성한 후에 입력되는 데이터와도 중복될 수 없으니 신중해야 한다.

 

ASC 또는 DESC는 인덱스를 오름차순 또는 내림차순으로 만들어준다. 기본은 ASC로 만들어지며, 일반적으로 DESC로 만드는 경우는 거의 없다.

 

CREATE [UNIQUE] INDEX 인덱스_이름
    ON 테이블_이름 (열_이름) [ASC | DESC]

 

인덱스 생성의 예

CREATE INDEX idx_member_addr
    ON member (addr);
    
SHOW INDEX FROM member;

 

Result

 

 

CREATE UNIQUE INDEX idx_member_name
    ON member (mem_name);

ANALYZE TABLE member; -- 지금까지 만든 인덱스 모두 적용
SHOW INDEX FROM member;

 

Result

 

 

인덱스를 실질적으로 활용하기 위해서는 WHERE 문을 사용해야 한다.

 

인덱스 활용의 예

SELECT mem_id, mem_name, addr
    FROM member
    WHERE mem_name = '에이핑크';

 

Result

 

Execution Plan

 

 

MySQL의 경우 WHERE 문에 작성된 조건에 따라 그 효율성을 먼저 따져, 만약 인덱스 검색의 효율이 더 좋다면 인덱스 검색을, 그렇지 않다면 테이블 전체 검색을 수행한다.

따라서 되도록 WHERE 절에 작성된 열 이름에는 가공을 하지 않는 것이 바람직하다.


인덱스를 제거하기 위해서는 DROP INDEX 문을 사용하고 형식은 다음과 같다.

 

DROP INDEX 인덱스_이름 ON 테이블_이름

 

주의할 점은 기본 키, 고유 키로 자동 생성된 인덱스는 DROP INDEX로 제거하지 못한다는 것이다. 이 경우 ALTER TABLE 문으로 기본 키나 고유 키를 제거하면 자동으로 생성된 인덱스도 제거할 수 있다.

 

ALTER TABLE member
    DROP PRIMARY KEY;
저작자표시 (새창열림)

'📟 Database > 혼자 공부하는 SQL' 카테고리의 다른 글

[MySQL] 16. 스토어드 함수와 커서의 개념, 커서(cursor)의 단계별 실습 방법  (5) 2022.04.10
[MySQL] 15. 스토어드 프로시저(stored procedure)의 개념과 사용 방법(입출력 매개변수의 활용 방법)  (0) 2022.04.10
[MySQL] 13. 인덱스의 내부 작동 원리와 구조, 인덱스에서 데이터 검색하기  (0) 2022.04.09
[MySQL] 12. 인덱스의 개념과 장단점, 클러스터형 인덱스와 보조 인덱스  (0) 2022.04.09
[MySQL] 11. 가상의 테이블: 뷰(생성, 수정, 삭제)  (0) 2022.04.09
'📟 Database/혼자 공부하는 SQL' 카테고리의 다른 글
  • [MySQL] 16. 스토어드 함수와 커서의 개념, 커서(cursor)의 단계별 실습 방법
  • [MySQL] 15. 스토어드 프로시저(stored procedure)의 개념과 사용 방법(입출력 매개변수의 활용 방법)
  • [MySQL] 13. 인덱스의 내부 작동 원리와 구조, 인덱스에서 데이터 검색하기
  • [MySQL] 12. 인덱스의 개념과 장단점, 클러스터형 인덱스와 보조 인덱스
Baeg-won
Baeg-won
  • Baeg-won
    좋았다면 추억이고 나빴다면 경험이다.
    Baeg-won
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 🍃 Spring, Spring Boot
        • 스프링 프레임워크 기초
        • 스프링 핵심 원리 - 기본편
        • 자바 ORM 표준 JPA 프로그래밍 - 기본편
        • 스프링 MVC
        • 실전! 스프링 부트와 JPA 활용1 - 웹 애플리..
      • 🥑 Web Technoloy
      • 🚗 Backend Toy Project
        • 스프링 부트 게시판
        • Photogram
        • Baeg-won Clothing Gallery
      • 🥇 Problem Solving
        • Breadth-First Search
        • Depth-First Search
        • Backtracking
        • Simulation
        • Two-pointer
        • Binary Search
        • Greedy
        • Dynamic Programming
        • Minimum Spanning Tree
        • Dijkstra
        • Floyd warshall
      • ☕ Java
        • 명품 자바 에센셜
        • Applications
      • 🍦 JavaScript
        • JavaScript 기초
      • 🐧 Linux
        • 이것이 리눅스다(CentOS 8)
      • 📟 Database
        • 혼자 공부하는 SQL
      • 🧬 Data Structure
      • 🎬 HTML
      • 🎤 Tech Interview
      • 📌 etc
        • Unity 2D Raising Jelly Game
        • C++
        • 영어 쉐도잉
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Baeg-won
[MySQL] 14. 인덱스의 생성과 제거 문법(CREATE INDEX, DROP INDEX)
상단으로

티스토리툴바