# Table of Contents

# 인덱스

책 앞 쪽의 인덱스 페이지를 사용하여 원하는 페이지를 빠르게 찾을 수 있다. 이처럼 관계형 데이터베이스에도 인덱스(Index)라는 개념이 존재한다. 인덱스는 정렬되어있기 때문에 이진탐색으로 빠르게 데이터를 탐색할 수 있다.

  • 인덱스는 반드시 유일할 필요는 없다.
  • 인덱스는 정렬되어야 한다.

# 인덱스 확인

SHOW INDEX FROM 테이블이름;
SHOW INDEX FROM member;

# Primary Key와 인덱스

Primary Key를 지정하면 인덱스가 자동으로 생성된다.

CREATE TABLE member (
	id BIGINT PRIMARY KEY AUTO_INCREMENT NOT NULL,
    email VARCHAR(255) UNIQUE KEY NOT NULL,
    name VARCHAR(255) NOT NULL
);




 



> SHOW INDEX FROM member;
+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| Table  | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible | Expression |
+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| member |          0 | PRIMARY  |            1 | id          | A         |           0 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| member |          0 | email    |            1 | email       | A         |           0 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+

# Unique Key와 인덱스

Unique Key를 지정해도 인덱스가 자동으로 생성된다.






 


> SHOW INDEX FROM member;
+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| Table  | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible | Expression |
+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| member |          0 | PRIMARY  |            1 | id          | A         |           0 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
| member |          0 | email    |            1 | email       | A         |           0 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+

# 인덱스 추가하기

직접 인덱스를 추가할 수도 있다.

CREATE INDEX idx_member_email_name ON member (email, name);