DB 인덱스

allnight5·2023년 1월 13일
0
  • 인덱스란?

    • 데이터를 빠르게 찾을 수 있도록 도와주는 도구
    • 책 뒷부분의 ‘찾아보기’. 찾고자 하는 단어를 책의 본문 처음부터 찾지 않고 찾아보기에서 빠르게 찾아서 본문의 페이지 번호로 이동
  • 인덱스의 장점과 단점

    • 인덱스의 장점

      • SELECT 문으로 검색하는 속도가 매우 빨라집니다.
    • 인덱스의 단점

      • 인덱스도 공간을 차지해서 데이터베이스 안에 추가적인 공간이 필요합니다.
      • 데이터 변경 작업(INSERT, UPDATE, DELETE) 가 자주 일어나면 오히려 성능이 나빠질 수 있습니다.
  • 사용자가 직접 생성하는 인덱스

    • 사용자가 생성하는 인덱스도 보조 인덱스 입니다.
    • 인덱스 생성
CREATE [UNIQUE] INDEX 인덱스_이름
	ON 테이블_이름 (열_이름) [ASC | DESC];

인덱스 확인
SHOW INDEX 테이블_이름;

인덱스의 적용
ANALYZE TABLE 테이블_이름;

인덱스 제거
DROP INDEX 인덱스이름 ON 테이블이름;

  • 인덱스를 효과적으로 사용하는 방법

    • WHERE 절에서 사용되는 열에 인덱스를 만들어야합니다.
    • 데이터 변경 작업보다 SELECT 문을 훨씬 자주 쓰는 열에 인덱스를 만들어야 합니다.
    • 데이터의 중복이 높은 열은 인덱스를 만들어도 별 효과가 없습니다.

데이터 베이스 생성과 테이블 생성 다시보기

--  자동 생성 인덱스

create database index_test_db; -- 데이터베이스생성
use index_test_db;	--작업할 데이터베이스로 이동(사용한다고 선언)
# 지정한 데이터 베이스에 테이블 생성
create table table1(
	col1 int primary key,
    col2 int unique,
    col3 int
    );

show index from table1;	-- 인덱스를 확인

-- 클러스터형 인덱스의 데이터 정렬 확인

drop table if exists member;

create table member
(	mem_id char(8),
	mem_name varchar(10),
    mem_number int,
    addr char(2)
    );

show index from member;

insert into member values('TWC', '트와이스', 9, '서울');
insert into member values('BLK', '블랙핑크', 4, '경남');
insert into member values('WMN', '여자친구', 6, '경기');
insert into member values('OMY', '오마이걸', 7, '서울');

-- 데이터 순서 확인
select * from member;

alter table member
	add constraint
    primary key (mem_id);
    
desc member;

-- 인덱스 직접 생성 및 동작 확인

use market_db;

select * from member;

show index from member;

-- 인덱스 직접 생성
create index idx_member_addr on member (addr);
create unique index idx_member_mem_name on member (mem_name);

analyze table member;

-- excution plan 확인
select * from member;
select mem_id, mem_name, addr from member;	
select mem_id, mem_name, addr from member where mem_name = '에이핑크';

-- 인덱스 삭제

show index from member;

drop index idx_member_mem_name on member;
drop index idx_member_addr on member;
profile
공부기록하기

0개의 댓글