테이블 인덱스 index(색인)

이태현·2025년 8월 22일

Web 개발

목록 보기
28/53
post-thumbnail

SQL

CREATE TABLE board(
`idx` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`bcode` CHAR(6) DEFAULT '' COMMENT '게시판 코드',
`id` VARCHAR(50) DEFAULT '' COMMENT '아이디',
`name` VARCHAR(50) DEFAULT '' COMMENT '이름',
`subject` VARCHAR(255) DEFAULT '' COMMENT '제목',
`content` MEDIUMTEXT COMMENT '내용',
`hit` INTEGER UNSIGNED DEFAULT 0 COMMENT '조회수',
`ip` VARCHAR(30) DEFAULT '' COMMENT '글쓴이 ip',
`create_at` DATETIME NOT NULL COMMENT '글 등록일시'
);

SQL - index란?

  • 검색에 도움을 줄 수 있는 것을 색인(index)라고 합니다. 인덱스를 사용하면 DB에서 검색 속도가 빨라지는 장점이 있습니다.

1. 인덱스 확인하기

SHOW INDEX FROM board;


현재는 idx에만 index가 걸려있으니 다른 걸 추가해 보겠습니다.

2. index 추가하기

ALTER TABLE board ADD INDEX `bcode` (`bcode`);


bcode에 똑같이 index를 추가 해주었습니다.

2.1 index 중복으로 추가하기 - bcode, id

ALTER TABLE board ADD INDEX `bcode_id` (`bcode`,`id`);


중복 index를 걸어서 bcode와 id로 같이 찾을 때 동시 조건으로 찾기 유용합니다.

2.2 index 삭제

ALTER TABLE board DROP INDEX `bcode_id`;


전에 사용했던 index 값들이 삭제된 걸 확인할 수 있습니다.

3. index 직접 넣기

  • 전에 있던 테이블을 지우고 이번에는 index를 직접 넣어서 만들어 보겠습니다.
CREATE TABLE board(
`idx` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`bcode` CHAR(6) DEFAULT '' COMMENT '게시판 코드',
`id` VARCHAR(50) DEFAULT '' COMMENT '아이디',
`name` VARCHAR(50) DEFAULT '' COMMENT '이름',
`subject` VARCHAR(255) DEFAULT '' COMMENT '제목',
`content` MEDIUMTEXT COMMENT '내용',
`hit` INTEGER UNSIGNED DEFAULT 0 COMMENT '조회수',
`ip` VARCHAR(30) DEFAULT '' COMMENT '글쓴이 ip',
`create_at` DATETIME NOT NULL COMMENT '글 등록일시',
INDEX `bcode` (`bcode`),
INDEX `id` (`id`)
);


이렇게 직접 table에 넣어서 index를 설정할 수 있습니다.

장단점

  • 장점
  1. 검색 속도가 빨라진다.
    • ex ) 선생님이 반장(index)에게 반친구들한테 6교시 7교시 시간표가 바뀌었다 라고 전해주면 선생님이 반친구들에게 한명한명 알려주는 것 보다 훨씬 빠르게 정보전달이 이루어진다.
  • 단점
  1. insert, delete, update 할 때 속도가 느려진다.
    • 어떤 데이터를 넣으면 그거에 대한 색인 작업을 거치기 때문입니다.
  2. 용량 증가
    • 색인 테이블을 관리하기 때문입니다.

마무리

다음 시간에는 게시판 관리에서 게시판 삭제를 해보겠습니다.

감사합니다.

profile
이해하고 분석하고 지배한다

0개의 댓글