ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 9장 갱신과 데이터 모델
    DB & SQL/SQL 레벨업 2023. 8. 9. 11:59

    26. 갱신은 효율적으로

    1. NULL 채우기

     

    2. 반대로 NULL을 작성

     


    27. 레코드에서 필드로의 갱신

     

    1. 필드를 하나씩 갱신

     

    2. 다중 필드 할당

    - 여러 개의 필드를 리스트화하고 한 번에 갱신하는 방법

    - 이렇게 하면 서브쿼리를 한꺼번에 처리할 수 있어 성능도 향상되고 코드도 간단해진다.

     

     

    3. NOT NULL 제약이 걸려있는 경우

     

    MERGE 구문 사용

    - NOT NULL의 경우에 대응하는 한가지 방법이 MERGE 구문을 사용하는 것이다

    - 본래 MERGE 구문은 UPDATE와 INSERT를 한번에 시행하려고 고안된 기술이다.

        ㆍ하지만 UPDATE 또는 INSERT만 수행해도 구문 상에는 문제가 없다.


    28. 필드에서 레코드로 변경

     


    29. 같은 테이블의 다른 레코드로 갱신

     

    1. 상관 서브쿼리 사용

    - SIGN 함수는 매개변수로 받은 숫자가 양수라면 1, 음수라면 -1, 0이라면 0을 리턴하는 부호 조사 함수이다.

     

    2. 윈도우 함수 사용

     

    3. INSERT와 UPDATE 어떤 것이 좋을까?

    - INSERT SELECT 에는 두 가지 장점이 있다.

        ㆍ1. 일반적으로 UPDATE에 비해 INSERT SELECT가 성능적으로 나으므로 고속 처리를 기대할 수 있다.

        ㆍ2. MySQL 처럼 갱신 SQL에서의 자기 참조를 허가하지 않는 데이터베이스에서도 INSERT SELECT는 사용할 수 있다.

    - 반면 INSERT를 사용할 때 단점은 같은 크기와 구조를 가진 데이터를 두 개 만들어야 한다는 것이다.

        ㆍ따라서 저장소 용량을 2배 이상 소비한다.

     


    30. 갱신이 초래하는 트레이드 오프

     

    1. SQL을 사용하는 방법

     

    2. 모델 갱신을 사용하는 방법

     


    31. 모델 갱신의 주의점

     

    1. 높아지는 갱신 비용

     

    2. 갱신까지의 시간 랙(Time Rag) 발생

     

    3. 모델 갱신비용 발생

     


    32. 시야 협착 : 관련 문제

     

    1. 다시 SQL을 사용한다면

     

    2. 다시 모델 갱신을 사용한다면

     

    3. 초보자보다 중급자가 경계해야

     


    33. 데이터 모델을 지배하는 자가 시스템을 지배한다.

    - 데이터 모델이 코드를 결정하지 코드가 데이터 모델을 결정하지 않는다.

    - 따라서 테이블 설계는 처음이 중요하다.


    마치며..

    - SQL을 효율적으로 갱신하려면 다중 필드 할당, 서브쿼리, CASE 식, MERGE 구문 등을 다양하게 활용

    - 모든 문제를 반드시 코딩으로 해결할 필요는 없음

    - 문제 해결 과정에서 모델을 변경하는 편이 손쉬운 경우도 있지만, 이후 그러한 모델을 다시 바꾸려면 힘듦

    'DB & SQL > SQL 레벨업' 카테고리의 다른 글

    10장 인덱스 사용  (0) 2023.08.09
    8장 SQL의 순서  (0) 2023.08.08
    7장 서브쿼리  (0) 2023.08.08
    6장 결합  (0) 2023.08.08
    5장 반복문  (0) 2023.08.07

    댓글

Designed by Tistory.