개발자 성장 일지

2022.04.05 인덱스 그리고 DB 설계

NEWDODORIPYO 2022. 4. 5. 23:34

인덱스에서 조회를 할 때 내가 원하는 방식으로의 정렬을 하려면 어떻게 해야 할까?

1. 인덱스 생성

내가 원하는 정렬 방식의 인덱스를 생성해서 그 방식으로 조회하기!

인덱스 생성 방법

CREATE [UNIQUE] INDEX [스키마명.] 인덱스명 ON [스키마명.] 테이블명 (칼럼 1 [, 칼럼 2, 칼럼 3,...])

 

ex)create index idx_basic on t_todo (delFlag , tno desc);
 --delFlag , tno 값을 기준으로한 인덱스

2. 힌트

내가 원하는 방식으로 유도할 수 있는 방식인 힌트

(❗주의 오라클에서만 사용 가능)(힌트의 방식은 여러 가지가 있다)

select/*+INDEX(t_todo idx_basic) */ * from t_todo where  tno > 0; --힌트

<이렇게 만들면 pk를 안 타고 인덱스를 타면서 조회한다 >

오라클 버전에 따라 동작이 다르다 (데이터가 너무 적으면 힌트를 줘도 풀스 캔 해버린다) 말 그대로 힌트!!!

 

데이터의 팽창

데이터의 수직 수평 팽창

⭐튜닝할 때 수직적 팽창에서 많이 사용되는 게 인덱스

⭐DB의 튜닝의 끝판왕은 데이터 자체를 줄이는 것

 

테이블 설계

설계할 때 가장 중요한 것은 내가 어떤 시스템을 만들 건지 정확하게 알아야 한다는 것

설계 요령

도메인을 신경 써서 만들어보자

1차→ 장부 (엑셀) 단독. 나 홀로 존재 , 순수한 명사

2차 →1차 도메인을 이용해서 일어나는 행위

테이블 설계 예시 <맛집>

모델링

누가 어떤 음식점에 언제 가서 평점을 몇 점을 주었는가? 를 알아보는 기능의 DB 설계

테이블에 들어가는 정보는 1차 도메인을 기준으로 잡으면 된다

내가 잡은 테이블이 맞는 건지 알아보는 방법은 이 테이블로 내가 원하는 기능을 만들 수 있는가? 를 생각해보자

 

데이터베이스에 기록하지 않는 정보는?

매번 달라지는 정보는 기록하지 않는다

예) 회원의 나이 <매년 변하기 때문에>

PK를 잡는 기준

단독으로 CRUD 가 가능한 곳

PK가 있는 게 유용하다는 생각이 들 때

 

 

참조키(FK)

  • 성능에는 전혀 영향을 주지 안는다 , 오직 데이터를 깔끔하게 유지하는 데에만 영향을 준다
  • 기본키를 참조하는 칼럼들의 집합
  • 외래 키를 가지는 칼럼의 데이터 형은 외래 키가 참조하는 기본키의 칼럼과 데이터형이 일치해야 한다

'개발자 성장 일지' 카테고리의 다른 글

로그인...쿠키..세션  (0) 2022.04.09
ERD  (0) 2022.04.09
2022.04.04 DB 와 WEB 연결  (0) 2022.04.05
2022.04.01 DB야 안녕?  (0) 2022.04.02
2022.03.31 죽어라 DB야  (0) 2022.03.31