2016. 12. 23. 15:05
반응형
어떤 구분을 위한 컬럼값을 'O,X' 를 할 수도 있고 null이 들어갈 수도 있다.

1. 우선 독자적인 컬럼으로 인덱스를 구성할 때..
  가. 인덱스 액세스를 이용할 좋은 분포도를 가진경우 : 상수값
  나. 인덱스를 사용하지 않는 것이 훨씬 유리한 넓은 분포도를 가진경우 : null

2. 결합 인덱스로 생성될 컬럼 : 절대 null 허용하지말고 '상수값'으로 부여
반응형
Posted by AniBumiRami
2016. 12. 20. 16:33
반응형
m:m 관계의 테이블에서 양쪽 값을 월별 집계를 내고자 할때 기준테이블로부터 기준값을 서브쿼리로 먼저 만들고 각각 outer join으로 조인한 후 group by를 해야한다.
하지만 이런 쿼리는 복잡할 뿐 아니라 제대로 된 결과가 안나올 상황이 많다.
이럴때 union all과 group by를 이용하여 join 없이 쉽게 결과를 추출할 수 있다.
예문)
select 년월, nvl(sum(불입금액),0), nvl(sum(인출금액),0) from (select 관리번호, substr(불입일자, 1, 6) 년월, 원화금액 불입금액, to_number(null) 인출금액 from 예입내역 where 불입일자 between :indate and :enddate
union all
select 관리번호, substr(인출일자, 1, 6) 년월, to_number(null) 불입금액, 원화금액 인출금액 from 인출내역 where 인출일자 between :indate and :enddate)
group by 년월;

출처 : 대용량 데이터베이스 솔루션2
반응형
Posted by AniBumiRami
2016. 12. 15. 16:57
반응형
1. 연산이 필요하면 number 타입으로 지정. 단 소수점은 반올림되어 저장되므로 소수점 자릿수를 결정

2. 인덱스로 생성할 컬럼은 문자타입으로 지정. number타입이 문자타입과 비교될 때 상대 문자타입을 숫자로 바꾸어 비교됨

3. 특히 숫자타입을 like 'char%' 로 비교하면 숫자타입을 문자타입으로 변환되므로 인덱스가 사용되지않음

4. 일련번호는 반드시 숫자타입으로 지정.
반응형
Posted by AniBumiRami