본문 바로가기

프로젝트 & TIL/일별 공부 기록 (백엔드 스쿨)

14일차 - DB index

- CHAR : 속도 빠름, 용량 많이 차지 => 검색에 용이하다.

- VARCHAR : 속도 느림, 용량 적게 차지

  

- DELETE : 데이터만 삭제된다.

- TRUNCATE : 데이터 및 인덱스 데이터도 같이 삭제된다.

  

LENGTH()

SELECT LENGTH('홍길동');   # 9

  

UUID()

- 고유값을 랜덤으로 생성한다.

  

INSERT INTO ~ SELECT ~

INSERT INTO 테이블 (a, b, c)
SELECT NOW(), UUID(), `hi` FROM 테이블;

- 테이블의 row 개수만큼 데이터가 추가된다. a 칼럼에 NOW(), b 칼럼에 UUID(), c 칼럼에 'hi'가 들어감

  

SQL_NO_CACHE

SELECT SQL_NO_CACHE * FROM 테이블;

- 캐시를 쓰지 않는다. => 캐시를 쓰지 않은 정확한 속도 측정

  

INDEX 추가

ALTER TABLE 테이블 ADD INDEX (컬럼);
ALTER TABLE 테이블 ADD UNIQUE INDEX (컬럼);

- 장점 : 고속 검색 가능

- 단점 : 추가/수정/삭제 시 추가 작업을 해야 한다.

- UNIQUE가 아닌 일반 인덱스면 검색 시 일치하는 값을 발견해도 데이터 전체를 검색한다.

  

EXPLAIN

EXPLAIN SELECT SQL_NO_CACHE * FROM 테이블 WHERE ~;

- 실행 계획 확인

- type이 ALL => 전체 검색, const => 일치하는 값 발견하면 검색 끝