데이터 양이 매우 많은 테이블들이 여러개 조인되고 그 안에서 조건을 넣어 조인을 하다 보면 SQL 속도가 상당히 느려짐.

이 때 임시 테이블이나 신규로 통계 데이터를 저장하는 테이블을 만들어서 작업 외 시간에 해당 테이블에 저장을 미리 시킨 후 해당 쿼리 결과가 필요할 땐 신규 테이블에서 값을 가져와서 보여주는 형태로 하면 빠름.

단점 : 실시간 확인해야 하는 통계 SQL에는 적용하기 힘듦. 이 땐 SQL 튜닝이나 다른 방법을 찾아야 함

Posted by 知彼知己百戰不殆
,

오류 상황 : mybatis 도입 후 테스트 프로젝트에서는 문제 없이 작동했던 부분이 원본 프로젝트 소스와 merge 하고 나니 오류 발생. 1, 2, 3, 4 쿼리를 순차적으로 타고 결과를 도출해야 하는데 1번 쿼리 실행 후 catch문 로그도 안 찍고 갑자기 finally로 빠져버림.

트러블슈팅 : ① 오류 로그라도 뭔가 확인이 가능해야 버그를 잡아내는데 아무런 로그가 안찍히니 답답했다. 그래서 할 수 없이 디버깅 모드로 실행 후 오류나기 바로 전 메소드에 toggle 걸어주고 한 step씩 넘기면서 모든 변수 값 다 확인.
② log4j 관련 변수였나? 정확한 기억은 안나지만 특정 변수에 java.lang.NoSuchMethodError: org.apache.log4j.Logger.isTraceEnabled()Z 오류 내용이 들어감
③ 지난 번 테스트 프로젝트에서 보고 해결했으나 블로그에 안 적어놔서 다시 구글링
④ log4j 1.2.12 버전 이후로 해당 메소드가 들어가 있다는 내용 확인
⑤ log4j.jar 파일 교체(기존: 1.2.8 버전)

하지만 아직도 왜 catch문을 안 탔는지 이해가 잘 안 간다. 추후 좀 더 확인해볼 필요가 있음.

Posted by 知彼知己百戰不殆
,

Table A (group by 한 값들이 모두 들어있는 테이블)
select '1' from dual union all
select '2' from dual union all
select '3' from dual union all
select '4' from dual union all

Table B (실제 값 가져오는 쿼리)

이런 식으로 group by 했을 때 무조건 나와서 통계 표와 맞춰야 하는 값들 강제 작성 후 left join 

Posted by 知彼知己百戰不殆
,