[MSSQL2012] OFFSET 페이징기법

-- MSSQL 2012. 11. 19. 10:02
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

SELECT     IDX, ID, NAME

FROM        T_MEMBER

ORDER BY IDX DESC   

OFFSET 10 ROWS                        -- 시작될 카운트번호

FETCH NEXT 10 ROWS ONLY;       -- 몇 개를 출력할 것인지


 

Offset Fetch에 대한 제한 사항


l
  외부 쿼리와 상관 관계를 만들 수 없습니다.

l  OVER 절은 OFFSET 및 FETCH를 지원하지 않습니다.

l  OFFSET 및 FETCH는 INSERT, UPDATE, MERGE 및 DELETE 문에서 직접 지정할 수 없지만 이러한 문에 정의된 하위 쿼리에서는 지정할 수 있습니다

l  UNION, EXCEPT 또는 INTERSECT 연산자를 사용하는 쿼리에서는 쿼리 결과의 순서를 지정하는 마지막 쿼리에서만 OFFSET 및 FETCH를 지정할 수 있습니다.

l  같은 쿼리 식(같은 쿼리 범위)에서 TOP을 OFFSET 및 FETCH와 결합할 수 없습니다.

 

안정된 최적화를 위해서는 아래 조건을 만족해야 합니다.


l
  쿼리에 사용되는 기본 데이터가 변경되지 않아야 합니다.즉, 쿼리와 연결된 행이 업데이트되지 않거나 페이지에 대한 모든 쿼리 요청이 스냅숏 또는 직렬화 가능 트랜잭션 격리를 사용하여 단일 트랜잭션에서 실행되어야 합니다.

l  ORDER BY 절이 고유한 열 또는 열의 조합을 포함해야 합니다.

참고 : http://msdn.microsoft.com/ko-kr/library/ms188385(v=sql.110).aspx#Offset
참고 : http://www.mssqlgirl.com/paging-function-performance-in-sql-server-2012.html


출처 : http://devman.tistory.com/293

posted by 어린왕자악꿍