인덱스? 쓸까말까

0

DB

목록 보기
17/17

[내 상황]

유저가 처방약 등록할 때 약먹는 시간을 5분단위로 넣을 수 있음.
그래서 5분마다 scheduler를 돌리면서 유저가 처방약 등록한 시간마다 push 알림을 보내주게되는데, 이 때 처방약 테이블을 한바퀴 씩 돌아야하니까 효율을 위해서 index를 사용하려고했는데, 아래 글(INDEX 손익분기점)을 보니까 우리는 5분마다 스케줄러 돌릴 때 전체데이터의 10~15%만큼 뽑아내지 못할 것 같아서 주저했다.

  • INDEX 손익분기점

    • 테이블이 가지고 있는 전체 데이터양의 10% ~ 15%이내의 데이터가 출력 될 때만 INDEX를 타는게 효율적이고, 그 이상이 될 때에는 오히려 풀스캔이 더 빠르다.
  • 데이터가 충분히 많지 않다면 인덱싱을 활용하는 것이 오버헤드가 될 수 있다. 옵티마이저가 비효율적이라고 판단해 인덱스를 자체적으로 활용하지 않기도 한다.

  • 그리고, 이 글을 발견하고 사용해보기로 했다.

    • index scan : 인덱스는 많은 데이터에서 소량의 데이터 찾을 때
    • full table scan : 많은 데이터에서 많은데이터 가져오는 때
    • 내가 원하는게 딱 많은 데이터에서 소량의 데이터를 뽑아오길 원하는 것이였기 때문에 사용해보려고 한다.
  • 인덱스가 안먹히는 쿼리도 있으니 주의!!!

출처

profile
백엔드를 공부하고 있습니다.

0개의 댓글