본문 바로가기

SQL23

JPA 실습중 JPA를 처음 접하고 든 생각: 실무에서 복잡한 조회 쿼리 짤 때 이걸 어떻게 써..? 책 읽다보니, 주로 CUD에서만 쓰고, 조회는 querydsl, jooq, MyBatis 쓴다고함. (궁금증 해결 완료) 2022. 11. 24.
#JOIN 되는 기준컬럼 값이 둘다 NULL이라면 - 작성중 A 테이블 PK NAME CLASS 1 MIKE A 2 JANE B테이블 PK CLASS 1 A 2 3 2022. 8. 23.
#Merge문 오류- 작성중 처음 쿼리의 소스는 소스테이블 중 전체이구요. 변경 쿼리의 소스는 소스테이블 중 1건입니다. 처음 쿼리는 전체를 대상으로 동일값을 입력 처리하고 있구요. ==> 중복 발생 변경 쿼리는 1건을 대상으로 입력처리합니다. INTO TARGET_TABLE TARGET -- 요기(INTO)가 타겟이고 USING SOURCE_TABLE SOURCE -- 요기(USING)가 원본이죠. ON 절은 원본과 타겟의 연결조건이구요. 원본에 대한 조건을 주려면 ON 절이 아닌 USING 절에서 줘야죠. 출처: http://www.gurubee.net/article/67886 2022. 8. 23.
SQL 옵티마이저 1. 통계정보와 비용 계산 원리 1) 선택도와 카디널리티 - 선택도: 전체 레코드 중에서 조건절에 의해 선택되는 레코드 비율 - 선택도 = 1 / NDV(Number of Distinct Values, 컬럼 값 종류 갯수) - 카디널리티: 전체 레코드 중에서 조건절에 의해 선택되는 레코드 개수 - 카디널리티 = 총 로우 수 * 선택도 = 총 로우 수 / NDV - 옵티마이저는 카디널리티를 구하고, 그만큼의 데이터를 액세스하는 데 드는 비용을 계산해서 테이블 엑세스 방식, 조인 순서, 조인 방식 등을 결정한다. 2) 통계정보 3) 비용 계산 원리 비용(Cost)의 정확한 의미 'I/O 비용 모델'을 사용할 때 실행계획에 나타나는 Cost는 '예상 I/O Call 횟수'를 의미한다. 반면, 최신 'CPU 비.. 2022. 4. 24.
인덱스를 이용한 소트 연산 생략 # 3. 인덱스를 이용한 소트 연산 생략 ## ORACLE ROWNUM - P.357 ```SQL SELECT * FROM EMP WEHRE ROWNUM 3 --불가능 WHERE ROWNUM BETWHEEN 3 AND 5 --불가능 ``` ## 페이징 처리 ANTI패턴 ## 윈도우함수 - 인덱스를 활용하여 적은 양의 데이터를 조회할 때는 First Row Stopkey 알고리즘을 탈 수 있도록 윈도우 함수의 사용을 지양한다. - 인덱스 활용 패턴은 랜덤 I/O 발생량만큼 성능도 비례해서 느려지므로 대량 데이터를 조회할 때 결코 좋지 않다. - 대량 ## 소트 알고리즘 - First Row Stopkey - Top N Stopkey - Top N 소트 2022. 4. 14.
DML 튜닝 1. 기본 DML튜닝 1) DML 성능에 영향을 미치는 요소 인덱스 - 인덱스 개수가 DML 성능에 미치는 영향이 매우 큰 만큼, 인덱스 설계에 심혈을 기울여야 한다. 무결성 제약 - PK 제약과 기타 무결성제약을 모두 제거한 상태로 테이블에 INSERT하면 훨씬 적은 시간이 소요된다. 조건절 서브쿼리 REDO 로깅 - REDO 로그는 트랜잭션 데이터가 어떤 이유에서건 유실됐을 때, 트랜잭션을 재현함으로써 유실 이전 상태로 복구하는데 사용된다. - DML을 수행할 때마다 REDO 로그를 생성해야 하므로 REDO 로깅은 DML 성능에 영향을 미친다. - REDO 로그의 용도: 사용자의 갱신내용이 메모리상의 버퍼블록에만 기록된 채 아직 디스크에 기록되지 않았지만 REDO 로그를 믿고 빠르게 커밋을 완료한다... 2022. 4. 9.