독서(Reading)/오늘의 책(Today's book)

2022년 7월 2주차 SQL 코딩의 기술(pp.118 ~ 175)

Chaany 2022. 7. 14.
728x90

BETTER WAY 18. 설계를 변경할 수 없을 때는 뷰로 데이터를 간소화하자

  • 사용자에게 직관적인 데이터를 제공하려면 뷰를 사용한다.
  • 사용자가 정확히 필요한 데이터를 보거나 더는 필요 없는 데이터를 보지 않게 제한하려며 뷰를 사용한다. 필요하면 WITH CHECK OPTION을 사용한다.
  • 복잡한 쿼리를 숨기고 재사용하려면 뷰를 사용한다.
  • 여러 테이블에 있는 데이터를 취합해 보고용 데이터를 만들 때는 뷰를 사용한다.
  • 뷰를 사용하면 코딩 규칙이나 명명법을 강화할 수 있다. 특히 기존 데이터베이스 설계를 변경해서 작업할 때 특히 유용하다.

BETTER WAY 19. 비관계형 데이터를 정보성 데이터로 변환할 때는 ETL을 사용하자

 

BETTER WAY 20. 요약 테이블을 만들어 관리하자.

 

BETTER WAY 21. 비정규화된 데이터를 언피벗하려면 UNION 문을 사용하자

  • UNION 쿼리에서 각 SELECT 문은 컬럼의 개수가 동일해야 한다.
  • 각 SELECT 문에서 사용하는 컬럼 이름이 달라도 문제는 없지만, 각 컬럼의 데이터 타입은 서로 호환되어야 한다.
  • 중복 로우를 제거할 필요가 없거나 중복 로우를 제거해서 일어난 성능 문제를 없애려면 UNION 대신 UNION ALL을 사용한다.

CHAPTER 4. 데이터 필터링과 검색

 

BETTER WAY 22. 관계 대수와 이를 SQL로 구현하는 방법을 이해하자

 

BETTER WAY 23. 일치하지 않거나 누락된 레코드를 찾아내자

  • NOT IN보다는 NOT EXISTS 연산자를 사용하는 것이 더 빠르다
  • 최선의 방법을 찾으려면 DBMS 쿼리 분석기를 사용한다

BETTER WAY 24. CASE로 문제를 해결해야 할 때를 파악하자

  • IF THEN ELS 문제를 해결해야 할 때 CASE만큼 강력한 도구는 없다.
  • 값이 동일한지 검사할 대는 단순형을 사용하고, 복잡한 조건에는 검색형 CASE를 사용한다.
  • SELECT절의 컬럼, WHERE나 HGAVING 절의 조건 일부를 포함해 값 표현식을 쓸 수 있는 곳에서는 CASE를 사용할 수 있다.

BETTER WAY 25. 다중 조건 문제를 해결하는 기법을 파악하자

  • 하나 이상의 관련된 자식 테이블에 한 개 이상의 조건을 적용해 부모 테이블에 있는 로우를 추출하려면 서브쿼리에 대한 널 검사(좌절성 조인), IN과 AND 또는 NOT IN과 OR를 포함한 INNER JOIN이나 OUTER JOIN을 사용해야 올바른 결과를 얻을 수 있다.

BETTER WAY 26. 완전히 일치하는 데이터가 필요할 때는 데이터를 분할하자

  • BETTER WAY 27. 날짜와 시간을 모두 포함하는 컬럼에서 날짜 범위를 올바르게 검색하는 방법을 알아 두자
  • 묵시적 날짜 변환에 의존하지 말고 명시적으로 날짜 변환 함수를 사용한다.
  • 인덱스를 사용하지 못하므로 datetime 타입의 컬럼에 직접 함수를 사용하지 않는다.
  • datetime 값은 반올림 오류가 있음을 기억하자. BETWEEN 대신 >=, <= 연산자를 사용한다.

 

 

 

728x90

댓글