SQL 코딩의 기술

JE·2022년 3월 31일
0

코딩의 기술

목록 보기
1/1

GOAL

『 SQL 코딩의 기술 』을 읽고 얻은 기술들을 정리하고, 더 깊게 알기.

1. 제품별 다른 속성들을 테이블로 표현할때,

1) XML이나 JSON 문서를 저장할수 있는 ATTRIBUTE 컬럼을 생성하는 방법

=> 관계형 테이블에 있는 속성을 노출하도록 규정하는 비즈니스 규칙이 없을 때.

2) ATTRIBUTE 테이블을 생성하여 컬럼을 로우로 쌓고, HEADER테이블과 연결.

=> 임의의 속성을 질의할 수 있어야 할때

2. 무손실 분할 ( Lossless Decomposition )

; 더 높은 정규화 형식을 위반하는지 분석할 때 사용할 수 있는 방법 중 하나.
;
...

3. 클러스터, 비클러스터

1) 클러스터 인덱스

; 인덱스를 만들 때 명시된 컬럼의 순서대로 테이블의 데이터를 물리적으로 정렬.

2) 비클러스터 인덱스

; 리프노드는 데이터를 포함하지 않고 인덱스 키와 데이터를 가리키는 북마크로 구성.

3. 인덱스 유형에 따른 B-tree 인덱스의 기여도

1) 클러스터 인덱스의 경우 ,

2) 비클러스터 인덱스의 경우 ,


4. 해시조인 ( Hash Join )


5. LIKE 조건이 필요할때,


6. 자신이 사용하고 작성하는 sql의 종류를 파악할것.

  • 각 dbms 옵티마이저별 처리 우선순위나 쿼리별 성능 차이가 있기 때문에, 어떤 쿼리를 잘 변환하고 어떤 쿼리가 성능이 좋은지 파악해두는게 좋다.
  • danish dba troels arvin 의 sql비교 정보 사이트 http://troels.arvin.dk/db/rdbms

7. 구체화된 쿼리 테이블 ( MQT : Materialized Query Table)


8. GRUOP BY 절 제대로 이해하고 사용하기.

  • 컬럼을 과도하게 기술하면 쿼리의 성능에 악영향을 미칠 뿐만 아니라 읽고 이해하기 어렵고 재작성도 어렵다.
  • 집계와 세부정보 조회 두 가지 목적을 달성해야 하는 쿼리를 작성할때는 먼저 서브쿼리에서 모든 집계를 수행한 후 세부 데이터를 담은 테이블과 조인해 해당 정보를 가져오자.

9. 공통 테이블 표현식 ( CTE : Common Table Expressions)

; 쿼리 실행 중에 메모리에 존재하는 테이블. 쿼리 내부에서 임시 테이블을 정의하는 일종의 매크로 기능,


10. 연관성이 있는 서브쿼리

  • IN 문은 모든 로우를 가져온다.
  • EXISTS는 조건에 맞는 첫 번째 로우를 만나면 서브쿼리의 수행을 중단. 옵티마이저에서는 세미 조인으로 최적화 함.

11. 실행계획의 작동 원리

1) Key Lookup 연산

2) Index Seek 연산


12. 한 테이블에서 각 로우와 다른 모든 로우를 쌍으로 만드는 방법을 알아두자.

  • 예를 들어 리그 경기 일정 조합을 만들때.

13. 탤리테이블 (Tally Table)

; 1또는0 부터 시작해 상황에 맞는 최대 수까지 일련본호 값이 있는 단일 컬럼으로 구성. 원하는 범위 내에서 연속적인 값을 가진 컬럼이나 요약 정보 집합을 피버팅하는데 도움이 된다.

14. 사거블 쿼리

; DB 엔진이 인덱스를 잘 활용하려면 쿼리의 서술 논리절(WHERE, ORDER BY, GROUP BY, HAVING 절)이 인덱스를 사용해야 하는데, 이를 사거블 이라는 용어로 표현

15. 복잡한 검색에는 계통 순회 폐쇄 구조를 사용하자.

  • 계통 테이블 사용 시 단점 : 메타데이터를 유지하기 위해 계층 정보를 변경할때 여러 레코드에서 삽입과 삭제를 해야하기 때문에 테이블 관리에 많은 노력이 필요. 관리가 제대로 되지않으면 부적합한 계층 정보로 인해 잘못된 결과를 반환할 수도 있음.

ing,,,


REF

- SQL 코딩의 기술
- cte에 대해 알아보자
- 인덱스와 사거블 쿼리

profile
평범한 개발자

0개의 댓글