행위

이력관리 점이력 선분이력

DB CAFE

thumb_up 추천메뉴 바로가기


1 이력 관리 모델[편집]

  • 선분 이력은 과거 특정 시 점의 데이터를 조회하는 요건이 많을 때 채택하는 조회 성능을 고려한 방법

2 점이력[편집]

  • 선분 이력이 사용될 때는 계약기간, 운영기간 같은 종료시점이 필요한 데이터 관리

12-4.jpg

2.1 점이력 장단점[편집]

  1. 점 이력은 변경 시점의 데이터를 넣는 과정에서 종료시점을 계산해서 넣을 필요가 없기에 훨씬 편합니다.(날짜 컬럼 1개로 관리)
  2. 선분 이력에서는 인덱스 스캔 시 (종료일자 + 시작일자)가 효율적이었지만 점 이력에서 종료일자가 없음
    1. 그럼 성능이 좋지 않을 것이다? 라고 생각할 수 있지만 시작일자만으로도 좋은 효율을 볼 수 있습니다.

3 선분이력[편집]

12-5.jpg

3.1 선분이력 장단점[편집]

  1. 선분 이력 모델에서 종료시점을 NULL 허용 하면 BETWEEN 조건으로 조회시 나오지 않음
  2. 종료 시점이 미정일 경우 NULL로 두는게 맞지만 인덱스 사용이 불가능하기 때문에 인덱스 스캔을 고려한다면 '9999-12-31' 같이 값을 정해두는 것이 좋음.
    1. 종료시점 미정 (NULL 허용) : 현재시점 데이터 조회 시
--  시작시점 <= '2020-01-25' <= 종료시점
    '2020-01-13' BETWEEN ST_DT AND ED_DT (종료시점이 NULL인 데이터는 조회 안됨)
​
    1. 종료시점 미정 '9999-12-31' (NOT NULL) : 현재시점 데이터 조회 시
--  시작시점 <= '2020-01-25' <= 종료시점
  '2020-01-13' BETWEEN ST_DT AND ED_DT (현재시점 데이터 조회 가능)
  • 최종 변경건 데이터 조회 시 ED_DT = '9999-12-31' 로 빠르게 사용 가능
  또한, 인덱스(종료일자 + 시작일자)를 사용하면 인덱스(시작일자 + 종료일자) 보다 효율적으로 데이터 조회 가능