회사테이블 A
회사매출테이블(연도기준) B
2개의 테이블이 있고 조인해서 아래와 같은 쿼리 형태로 페이징을 해서 목록에 뿌려줍니다.
select top 10 * from A inner join B on A.idx=B.fk_idx where B.idx not in
(select top 0 B.idx from A inner join B on A.idx=B.fk_idx order by B.idx desc)
order by B.idx desc
목록에서는 아래와 같은 형태로 노출되어야 하구요
회사명 연도 매출 전년도매출
회사1 2014 500,000 300,000
위와 같은 쿼리에서는 전년도 매출을 뽑을 수 없어서
결과값을 반복하는 구문에서
전년도 매출을 구하는 쿼리를 실행시켜서 목록에 노출시켜주고 있습니다.
데이타가 많지 않을 경우에는 별 문제는 없겠지만
비효율적인 것 같아서
쿼리 하나로 페이징 형태로 전년도 매출까지 같이 하려면 어떤식으로
쿼리를 짜야 할까요?
도움 부탁 드립니다.
Comment 1
-
자리비움
2014.11.19 17:53
페이징이 들어가고 한 페이지에 몇백, 몇천건씩 노출되지는 않을 듯 하니 서브 쿼리를 추천합니다.만약 성능상 문제가 된다면 "회사매출테이블(연도기준) B" 에 전년도 매출 컬럼을 추가 한 후 해당 년도의 매출 데이터가 입력될 시에전년도 매출 데이터를 조회한 후 같이 등록해주는 방법도 있습니다.