SQL Server 결과 페이징 코드

http://josephlindsay.com/archives/2005/05/27/paging-results-in-ms-sql-server/

SELECT * FROM (
SELECT TOP x * FROM (
SELECT TOP y fields
FROM table
WHERE conditions
ORDER BY table.field ASC) as foo
ORDER by field DESC) as bar
ORDER by field ASC

y는 끝지점 오프셋, x는 가져올 갯수
4번째부터 2개 가져온다고 하면
텍스트로 그림을 그려서 설명하자면

---- 오름차순 y의 시작
1
2
3
4
---- 내림차순 x의 끝
5
6
---- 오름차순 y의 끝, 내림차순 x의 시작
7
8
9
10

y 영역을 가져와서 반대로 뒤집어 x 부분을 잘라내고 다시 결과를 뒤집으면 원하는 결과.
이런 간단한 방법도 있었네.

읽다보니 MSDN에 아예 글을 써놨구나.
How To: Page Records in .NET Applications



트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://xeraph.com/tb/3200838 [도움말]

덧글

  • 고공강하 2007/03/16 09:23 # 답글

    이 방법으로 대량의 데이터를 다루기엔 좀 느렸지. DB도 계속 발전을 하니까 최신 DB는 어떨지 모르겠다.
    하루에도 수만건의 데이터가 쌓이는 시스템에서 페이징하는건 쉽지 않던데.
  • 고공강하 2007/03/16 11:39 # 답글

    TOP 구문이 들어 간 거 보면 최적화가 되긴 했나보네. 흐음...
댓글 입력 영역