MS SQL 2005부터 사용가능한 ROW_NUMBER()를 이용한 Paging query
간단히 사용해보면 시작 위치와 마지막 위치만을 지정해주고, Order되는 Column을 설정해주면 된다.
1.
DECLARE
@startRow
INT
2.
DECLARE
@endRow
INT
3.
SELECT
*
FROM
(
SELECT
*, ROW_NUMBER() OVER(
ORDER
BY
LogonName)
AS
rownum
FROM
Product) ProductOrdered
WHERE
rownum > @startRow
AND
@endRow > rownum
일단 MS SQL 2005에서부터 사용할 수 있는 함수라서 단점을 가지고 있긴 하지만, 그래도 깔끔하고 무엇보다 속도가 매우 빠르다.
예전에 사용하던 SELECT TOP * FROM ~ 쿼리의 경우에는 뒤로 가면 갈 수록 query가 느려지는 단점을 가지고 있는데, 이를 전혀 신경 쓰지 않아도 되는 좋은 함수이다.