2021년 07월 15일 TIL

1 minute read

오늘은 Stream API에 대해서 조금 공부했다. Stream API 내부의 forEach 가 기존의 for-loop 방식에 비해 어떠한 장점과 단점이 있는지, 타인에게 설명할 수 있을 정도로 조금 더 꼼꼼히 공부해봐야겠다고 느꼈다. 또한 flatMap을 사용해본 적이 없는데, 뭔가 제대로 이해한다면 알고리즘 문제나 기타 다른 경우에도 적용할 수 있는 자료구조인 것 같아 공부해보려고 한다.

클러스터드 인덱스 / 넌클러스터드 인덱스

  • 클러스터드 인덱스는 테이블 당 1개씩만 허용되고, 그 자체가 인덱스인(PK 설정 시 그 컬럼이 자동으로 클러스터드 인덱스가 됨) 인덱스. 물리적으로 행을 재배열한다.
  • 넌클러스터드 인덱스는 레코드의 원본을 정렬하는게 아니라 인덱스 페이지만 정렬하고, 별도의 인덱스 페이지를 따로 만들기 때문에 용량을 더 차지한다

UNION / UNIONALL 차이

  • UNION = UNION DISTINCT의 줄임말
  • 최종 UNION [ALL | DISTINCT] 결과에 적합한 임시 테이블(Temporary table)을 메모리 테이블로 생성 UNION 또는 UNION DISTINCT 의 경우, Temporary 테이블의 모든 컬럼으로 Unique Hash 인덱스 생성 서브쿼리1 실행 후 결과를 Temporary 테이블에 복사 서브쿼리2 실행 후 결과를 Temporary 테이블에 복사 만약 3,4번 과정에서 Temporary 테이블이 특정 사이즈 이상으로 커지면 Temporary 테이블을 Disk Temporary 테이블로 변경 (이때 Unique Hash 인덱스는 Unique B-Tree 인덱스로 변경됨) Temporary 테이블을 읽어서 Client에 결과 전송 Temporary 테이블 삭제

  • 두 가지의 차이는 Temporary 테이블에 중복 제거를 위해 인덱스를 생성하는지 하지않는지만 차이난다.

앞으로 공부할 점

  • 자바의 버전별 차이점에 대해 조금 더 공부해봐야겠다.
  • DB 쪽을 조금 더 공부할 필요성을 느꼈다.

Categories:

Updated: