Database

MSSQL * OFFSET - FETCH 페이징 쿼리 ( ROW_NUMBER() 대체 )

___l_i_ * 2022. 5. 12. 15:27

해당 방법은 MSSQL 2012 이후(=11.X 이상)의 버전에서만 지원 가능하다.

MSSQL 2012 이전(=11.X 미만)의 경우 OFFSET 과 FETCH 를 지원하지 않기 때문에 ROW_NUMBER() 로 번호 정렬을 붙이고,

중첩쿼리를 이용하여 페이징 처리를 해주어야 한다.

 

사용방법

ORDER BY 정렬대상_칼럼명
	OFFSET 현재까지_행의_갯수 ROWS
    FETCH NEXT 가져올_행의_수 ROWS ONLY
더보기

첫번째 페이지 10개 가져올 쿼리

ORDER BY name
	OFFSET 0 ROWS
    FETCH NEXT 10 ROWS ONLY

 

두번째 페이지 10개 가져오는 쿼리

ORDER BY name
	OFFSET 10 ROWS
    FETCH NEXT 10 ROWS ONLY

 

중첩 쿼리가 빠지기 때문에 쿼리가 간단해지고 성능상의 이점이 생긴다고 한다.

 

 


Thanks for 🙈