749
yesterday 2,593
visitor 24,496,735
3

TOP TOP 페이징 방식

조회 수 37949 추천 수 0 2011.10.20 14:22:18

NOT IN 방식은 페이지가 증가할 수록 성능은 반감할 수 밖에 없는 구조입니다.

 

이를 개선하기 위해서는 TOP...TOP...방식을 사용하게 됩니다.

 

우선 페이지수*페이지당행수의 Key값을 가져온 다음 역순으로 필요한 행만을 가져오는 방식입니다.

 

예를 들어, 20 페이지이고 한 페이지당 5건의 데이터를 가져와야 한다면,

아래와 같이 키 값을 105 건 가져온 다음, 이 중 맨 마지막 5 건만 가져오고,

마지막으로 다시 정렬조건에 따라 정렬하여 결과를 반환하면,

최소 비용으로 페이징 처리를 할 수 있습니다.

 

 
SELECT TOP (5) *
FROM
(
SELECT TOP (5) *
FROM
(SELECT TOP ((20+1)*5) 키
  FROM 테이블
 WHERE 검색조건 = ''
ORDER BY 정렬조건 DESC) A
ORDER BY 정렬조건 ASC) B
ORDER BY 정렬조건 DESC


  

물론, 이때 내부 쿼리에 해당하는 검색조건, 정렬조건, 키값 등이 인덱스에 적절하게 포함되어 있어야

불필요한 비용을 최소화할 수 있습니다.

 

정렬조건이나 기타 검색조건이외의 단순 출력용 칼럼의 경우, 맨 마지막 5건에 대해서만 계산하여 가져올 수 있도록 해야 성능을 향상할 수 있습니다.

 

감사합니다.

 

출처 : http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=10205&docId=69841185

 

 

'헬로마켓'과 함께하는 스마트한 중고 아이템 거래

https://www.hellomarket.com

문서 첨부 제한 : 0Byte/ 2.00MB
파일 제한 크기 : 2.00MB (허용 확장자 : *.*)
List of Articles
번호 제목 글쓴이 날짜 조회 수
3 [MS SQL 2000] 알고 있지만 잘 사용하지 않는(?) DB 튜닝 TIP(1) - reindex 제리 2012-03-28 29706
» TOP TOP 페이징 방식 제리 2011-10-20 37949
1 현재 사용중인 MSSQL의 버전 확인하는 방법 제리 2011-10-20 26790

Program Note 로그인 :)