시간측정 코드 기존 코드 : 태그마다 select -> insert, 총 쿼리 6번 수정 코드 : in쿼리로 한번에 select -> insert 3번, 총 쿼리 4번 키 생성 전략이 identity라 batch insert 불가능 결과 기존 코드 총 30ms대 조회는 거의 0~1ms, 저장이 1~2ms 수정 코드 총 50~80ms대 in 쿼리가 병목(3개 찾는데 20~30ms) 저장은 3번 합쳐서 2ms 결론 : 기존 코드 유지
Query Optimization 사용자로부터 주어진 쿼리문을 평가하는 과정에서 equivalent한 관계대수식과, 각 연산에 대한 여러 알고리즘으로 인해 수많은 evaluation plan이 생길 수 있다. 이때 각 플랜의 비용은 큰 차이가 날 수 있기 때문에 쿼리문을 실행할 때에는 이 중 가장 효율적인 플랜을 선택해야하는데, 이 작업을 비용 기반 질의 최적화라고 한다. 비용 기반 질의 최적화는 다음과 같은 과정을 거쳐 이루어진다. Equivalence rule을 통해 논리적으로 동등한 관계대수 식을 만들어낸다 각 연산에 알고리즘을 배정하여 플랜을 만들어낸다 각 플랜별 비용을 추정하여 가장 비용이 적은 플랜을 선택한다. 이때 각 플랜의 비용은 Base Table에 대한 통계치(튜플의 개수, 서로다른 값의 개수 등), 중간 결과에 대한 통계치, 각 연산의 비용식을 통해 계산한다. 이때 Base Table에 대한 통계치는 데이터베이