본문 바로가기

Tech/Database32

세로 기반 데이터를 가로로 출력 쿼리 쿼리 결과를 가져올 때, 세로 기반 데이터를 가로로 출력이 필요할 때가 있다. 아래와 같은 데이터가 있다고 가정하자. 위와 같은 데이터를 날짜별로 사람 이름(james, julie)를 열 이름으로 지정하여 데이터를 전개해보면 아래와 같다. 날짜 1개의 레코드를 집약할 수 있게 group by dt를 사용한다. 그리고 max(case when )구문을 사용해서, 사용자 이름에 해당되는 값을 출력한다. 이를 구현하면 아래와 같다. select dt , max(case when name='james' then val end) as james , max(case when name='julie' then val end) as julie from vertical_tb group by dt order by dt; 아.. 2022. 1. 27.
인조식별자에 대한 고찰 인조식별자는 무조건 쓰면 안되나요? 직장 동료와 모델링 리뷰를 하면서 나온 주제다. 인조식별자는 무조건 나쁜 것일까? 결론부터 이야기 하자면, 필요시 적절히 인조식별자를 사용해서, 키를 상속받는 엔티티의 복잡도를 해소해야 한다. 어떤 경우에 인조식별자를 사용해야 할까? 먼저 엔티티의 종류부터 알아보자. 보통 엔티티의 종류는 크게 키 엔티티(Key entity), 메인 엔티티(Main Entity), 액션 엔티티(Action Entity) 로 분류된다. 이 중, 키 엔티티는 태생적으로 부모 엔티티 없이 존재하는 집합이다. 가령 부서, 가맹점, 경우에 따라서는 고객, 학생 집합이 키 엔티티로 분류될 수 있다. 엔티티 도출 시, 가장 먼저 나와야 하는 엔티티들이다. 메인 엔티티, 액션 엔티티는 이들 엔티티의 .. 2021. 7. 28.
DB 튜닝에 대한 얇고 넓은 지식 ▶ 인덱스가 있어도 효율적 활용이 불가능한 경우 1) 인덱스 선두컬럼, 조건절을 가공했을 경우.SELECT * FROM EMP WHERE SUBSTR(TO_CHAR(EMP_NO), 1, 4) = '2012'; 2) 부정형 비교SELECT * FROM EMP WHERE EMP_NO != '20120902; 3) Not null 컬럼 검색SELECT * FROM EMP WHERE DEPT_CD IS NOT NULL; ▶ 인덱스 컬럼 가공에 대한 튜닝 예시AS-ISSELECT * FROM EMP WHERE substr(이름, 1, 2) = '김길';TO-BESELECT * FROM EMP WHERE 이름 like '김길%'; AS-ISSELECT * FROM 사원 where 월급여 * 12 = 40,000,0.. 2019. 1. 13.
Tibero SQL 튜닝 Tibero SQL 튜닝 1. 튜닝 대상 SQL 찾기우선 튜닝 대상 SQL을 다음과 같은 방법으로 찾는다.APM을 통한 TOP SQL 분석LONGOPS View를 통한 분석시스템 사용자에 의한 성능적인 이유 해결의 요청* 주의 사항 쿼리 응답 시간이 짧다고 무조건 튜닝 대상에서 제외하면 안된다. 만약 이 쿼리의 수행횟수가 많다면, 이 쿼리의 블록 처리량도 많다. 따라서, 이러한 쿼리도 블록처리량을 감소시키는 것을 목표로 잡아야 한다. 2. SQL 실행 계획 추출튜닝대상 SQL을 찾았다면 실행계획을 확인해야 한다.V$SQL_PLAN뷰를 통한 확인TBSQL 프로그램의 AUTOTRACE 기능을 통해 보기SQLTRACE 기능을 이용해서 TBPROF 프로그램으로 수행결과 보기EXPLAIN PLAN문을 통해 PLA.. 2019. 1. 12.
반응형