MySQL에서 인덱스(index)가 포함된 테이블을 생성하면 대용량 데이터를 조회할 때 검색 성능을 크게 향상시킬 수 있습니다. 인덱스는 책의 목차와 같은 역할을 하여, 전체 테이블을 스캔하지 않고도 원하는 데이터를 빠르게 찾도록 도와줍니다.
기본 문법
먼저 테이블을 생성한 후, CREATE INDEX 구문을 사용해 각 컬럼에 인덱스를 추가하는 방식입니다.
create table yourTableName
(
yourColumnName1 dataType,
yourColumnName2 dataType
.
.
.
N
);
create index yourIndexName1 on(yourColumnName1);
create index yourIndexName2 on(yourColumnName2);
실전 예제로 따라 하기
1단계: 테이블 생성
먼저 예제로 사용할 테이블을 생성합니다.
mysql> create table DemoTable
-> (
-> Id int,
-> Name varchar(20)
-> );
Query OK, 0 rows affected (0.63 sec)
2단계: 인덱스 생성
아래 쿼리를 실행하여 각 컬럼에 인덱스를 추가합니다.
mysql> create index id_index on DemoTable(Id);
Query OK, 0 rows affected (0.36 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> create index name_index on DemoTable(Name);
Query OK, 0 rows affected (0.38 sec)
Records: 0 Duplicates: 0 Warnings: 0
3단계: 테이블 구조 확인
SHOW CREATE TABLE 명령어를 실행하면 인덱스가 정상적으로 적용되었는지 확인할 수 있습니다.
mysql> show create table DemoTable;
실행 결과는 다음과 같습니다.
+---------------+-----------------------------------------------------------------------------------------+
| Table | Create Table |
+---------------+-----------------------------------------------------------------------------------------+
| DemoTable | CREATE TABLE `DemoTable` ( `Id` int(11) DEFAULT NULL, `Name` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, KEY `id_index` (`Id`), KEY `name_index` (`Name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |
+---------------+------------------------------------------------------------------------------------------+
1 row in set (0.05 sec)
결과 분석
출력 결과에서 KEY `id_index` (`Id`)와 KEY `name_index` (`Name`) 항목을 통해 두 컬럼에 인덱스가 성공적으로 생성된 것을 확인할 수 있습니다.
알아두면 좋은 팁
- 인덱스는 SELECT 쿼리 속도를 높여주지만, INSERT·UPDATE·DELETE 작업 시에는 약간의 오버헤드가 발생할 수 있으므로 필요한 컬럼에만 적용하는 것이 좋습니다.
- 테이블 생성 시점에 인덱스를 함께 지정하고 싶다면 CREATE TABLE 문 안에
INDEX 인덱스명 (컬럼명)형태로 직접 선언할 수도 있습니다. - PRIMARY KEY나 UNIQUE 제약 조건을 설정하면 해당 컬럼에는 자동으로 인덱스가 생성됩니다.