튜닝 질문입니다. 0 1 2,360

by 손님 튜닝 [2009.02.13 12:07:02]


카드(관리번호,카드넘버,첫사용일,현재금액,그외속성10개)

주키 : 카드넘버

보조키:관리번호

인덱스 : 관리번호,카드넘버,첫사용일

==================================

카드전화 내역(카드넘버,사용일,부과된금액,그외속성20개)

합성키: 카드넘버+사용일

인덱스 : 카드넘버,사용일

==================================

릴레이션 카드전화 테이블이 카드 테이블의 관리번호를 외래키로 참조함

====================================

원하는 자료

0,관리번호지정후

1. 현재금액 50원 미만

2.부과된금액 합이 9500원 이상

3.첫사용일이 02월01일

4.사용한 날짜가 02월01일-02월02일

의 카드전화 내역 전체가 필요합니다.

0.카드에서 첫사용일로 데이터 영역지정

1.50원 미만 금액을 가지고옴

1,지정된 영역에서 관리번호의압 3자리 분리 (관리번호 예제 TTK00000001)  TTK

(질문A. 인덱스인 관리번호를 분리한후 검색이 빠를까요? 아님 50원미만으로 검색하는게 빠를까요?)

2,첫사용일,관리번호,현재잔액으로 검색된 중간 결과에서 카드넘버만 선택

3.카드전화내역에서 사용일을 검색 후 카드넘버 로 검색

3.카드전화내역에서 카드넘버을 검색 후 사용일 로 검색

(질문B 중복된 값으로 하면 카드넘버가 상대적으로 숫자는 적습니다만 어차피 한 행으로 찍이니.. 무얼 먼저

검색해야 할지 잘모르겠습니다.)

4. 3에서 검색된 자료에서 카드넘버 사용일 부과된금액 많을 가지고 와서 부과된금액의 합계를 9500원이상을 검색후 2의결과와 조인후 카드전화내역에 다시 조인시켜 결과값을 얻음

4. 3에서 검색된 자료에서 카드전화내역 전체 속성을  가지고와서합계를 9500원이상을 검색후 2의결과와 조인하여

결과값을 얻음

(질문C  첫번째 방법은 조인은 빠를거 같은대요 결과값이 전체 속성이 필요한거라서.. 다시 검색도 해야 되고

데이터 파일에서 메모리로 다시 불러와야 될거 같구요...

두번째 방법은 조인은 느리겠지만 데이터를 한번만 불러와서 제거만 하면 되니까.. 뭐가 빠를지 모르겠습니다.)

 

( 더 상세한 자료가 필요하시면 아는한도까지 말씀드리겠습니다. 오라클 9i 엔터프라이즈 툴은 토드를 사용합니다.)

 (질문E 한행 전체를 RDB용어로 머라고 하나요? 인스턴스? ... 머리가 나뻐서 햇갈림니다.....

            튜플은 한행의 한속성 맞죠 즉 엑셀로 치면 셀 한칸...)

 

오늘 비도 많이 오는대.. 다들 퇴근후 막걸리 한잔씩 하시는... 밤이 되시길~

수고하세요~

 

P.S 옵티마이저에 대한 개념은 알고만 있지 공부하지못했습니다. 실전보다 이론이 먼저인거 같에서 이론적 부분을

먼저 공부하고있습니다.

 

by 호야 [2009.02.13 18:28:43]
-_- 아.. 글로 이해 할려니... 도저히...ㅠ..ㅠ 몰것네요...

1. WHERE 절에서 검색을 할려는 컬럼을 변환 시키지 마세요
좌측의 변환은 금지 입니다.
2. 찾을려는 조건절 중 분포도가 가장 넓은 것을 찾으세요.
(자료를 최대한 압축 할수 있는... 그리고 중복이 많이 없는)
3. 원하는 검색들이 들어 갈때 인덱스나 주키들이 활용 되는지를 보세요
필요시에 다른 복합인덱스 생성 여부 확인

기본적인 것만 지키신다면, 느리지는 않을 겁니다.
그리고 마지막 질문의 답은 "레코드" 아닌가요?^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입