index 최적화

알파로그·2023년 3월 15일
0

Database

목록 보기
11/19

CHAR : 속도 빠름, 용량 많이
VARCHAR : 속도 느림, 용량 적게

📍 비밀번호 설정

  • 비밀번호는 data 로 저장하면 개인정보 보호법에 위배되기 때문에 해싱 코드로 생성해야 한다.
    • 최적화를 위해서 data 의 크기를 최소화 해야하는데
    • 해싱된 pw 의 길이를 확인해 최적화된 크기를 설정해 주면 된다.
      • length 함수 사용
      • ⚠️ 한글은 한자 당 2-3 바이트를 차지해 길이가 길게 나온다.
CREATE TABLE `member` (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    PRIMARY KEY(id),
    regDate DATETIME NOT NULL,
    loginId CHAR(50) NOT NULL,
    loginPw CHAR(40) NOT NULL,
    `name` CHAR(100) NOT NULL
);

연습용 data 마구 insert 하기

# 회원 2배 증가 쿼리만들고 회원이 백만명 넘을 때 까지 반복 실행
## 힌트1 : INSERT INTO `tableName` (col1, col2, col3, col4)
## 힌트2 : SELECT NOW(), UUID(), 'pw', '아무개'

INSERT INTO `member` (regDate, loginId, loginPw, `name`)
SELECT NOW(), UUID(), 'pw', '아무개'
FROM `member`;
# 검색속도 확인
## 힌트 : SQL_NO_CACHE
SELECT SQL_NO_CACHE *
FROM `member`
WHERE loginId = 'user1';

index 색인 기능

  • 고속 검색 가능
    • selext 속도 향상 - 비교할 수 없을 만큼 빨라짐
  • 추가/ 수정/ 삭제 시 추가 작업이 필요
    • insert/ update / delete 의 속도 하락
  • 색인을 걸어야 하는 시점
    • 시스탬이 드려질 때
    • 느린 코드 검출 기능 (Slow Query)
      • 이 기능으로 어느 작업을 할 때 속도가 느린지 확인한다.
      • 하루동안 테스팅후 느린 코드에만 색인을 추가한다.

인덱스

  1. unique index
    • column 에 중복값이 없을 때 사용하는 기능
    • 고속 스캔중 원하는 값을 찾으면 스캔을 중지한다.
    • 효율이 증가함
  2. 일반 index
    • column 에 중복값이 있을 때 사용하는 기능
    • 고속 스캔중 원하는 값을 찾더라도 끝까지 스캔한다.
  • index 추가
alter table member
add unique index({column});
  • index 삭제
alter table member
drop index {column};

explain

  • 지금 조회한 정보가 index 를 사용하는지 여부를 확인하는 기능
explain select * from member
where {column} = {data};
  • selext_type
  • parririons
  • type
  • possible_key
profile
잘못된 내용 PR 환영

0개의 댓글