오라큭 페이징이 잘 안되서 질문 드려요^^ 0 1 1,092

by 최삼식 [2015.02.13 02:34:17]


초보라서 하다하다가 안되서 질문 드려요. 

아래는 오라클 페이징 하려는 구문인데요.

2번 구문을 1번 구문에 적용 하려니 잘 안됩니다.고수님들 어떻게 하는지 조언부탁 드려요~~^^

2번 코드를 파란색 글씨쪽에 넣으면 ORA-00918: 열의 정의가 애매합니다. 메세지가 자꾸 뜨네요~~ ㅠㅠㅠ

1)

SELECT * FROM ( 

SELECT /*+ INDEX_DESC(Z OP_SAMPLE_PK) */ ROWNUM AS RNUM, Z.* FROM ( 

SELECT * FROM OP_SAMPLE//이곳에 넣으면 될듯

) Z WHERE ROWNUM <= 1000000 
) WHERE RNUM >= 999991;

2)

SELECT t500.code code, t500.company_code company_code, t500.trade_date trade_date, t500.trade_type trade_type, t500.payment_yn payment_yn, t500.tax tax,t500.tax_yn tax_yn, t500.total_price total_price, t500.remark remark, nvl(t201.name,'ShoppingMall') name, t211.name employee_name, t261_trk.name trade_type_name, t261_pmy.name payment_yn_name, t201.name, t500.show_yn , to_char(t500.REGIST_DATE_DETAIL,'hh24miss') detail FROM mall_t500_trade t500, mall_t201_company t201, mall_t211_employee t211, (SELECT code, name FROM mall_t261_code t261 WHERE t261.code_kind = 'TRK' AND t261.eprise_code = 0) t261_trk, (SELECT code, name FROM mall_t261_code t261 WHERE t261.code_kind = 'PMY' AND t261.eprise_code = 0) t261_pmy WHERE t500.company_code = t201.code AND t500.payment_yn = t261_pmy.code AND t500.trade_type = t261_trk.code AND t500.regist_code = t211.code AND t500.trade_type like '2%' AND t500.trade_date >= '20150201' AND t500.trade_date <= '20150213' and t500.show_yn = 'Y' AND t500.eprise_code > 0 Order By t500.trade_date desc, t500.code desc 

by 마농 [2015.02.13 08:38:36]

1. 이미 정렬을 한 뒤라 인덱스 힌트가 먹지를 않겠지요.
  - 힌트는 정렬하기 전에 넣어야 하구요.
  - 인덱스 구성이 어떻게 되는지? 힌트는 올바른지 모르겠네요?
  - 힌트는 잘 알고 사용해야 합니다.
2. 모두다 조인하고 가공하고 난 뒤 페이징처리는 비효율입니다.
  - 메인 테이블인 t500 만 가지고 페이징 처리한 뒤에 조인 및 가공 하세요.
3. 에러 원인은?
  - 서브쿼리 안에 똑같은 알리아스가 두개인게 있습니다. (name)

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입