Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 인덱스가 포함된 테이블 생성하는 방법 완벽 가이드

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 제약 조건을 설정하면 해당 컬럼에는 자동으로 인덱스가 생성됩니다.