본문 바로가기
C#/MSSQL

MSSQL 페이징 쿼리

by 개발하는 늑대 2025. 3. 6.
728x90

MSSQL 페이징 쿼리 가이드

✅ MSSQL 페이징 쿼리 기본 구조

MSSQL에서 페이징을 구현하려면 ORDER BY와 함께 OFFSETFETCH를 사용합니다.


SELECT *
FROM YourTable
ORDER BY SomeColumn
OFFSET (@PageNumber - 1) * @PageSize ROWS
FETCH NEXT @PageSize ROWS ONLY;
📌 주의: ORDER BY 필수!
OFFSETFETCH는 정렬 순서가 없으면 사용할 수 없습니다.

📌 MSSQL 페이징 예제

예를 들어, 한 페이지에 10개 데이터를 조회하며 2페이지째 데이터를 가져오는 쿼리는 다음과 같습니다.


DECLARE @PageNumber INT = 2;  -- 현재 페이지
DECLARE @PageSize INT = 10;   -- 페이지당 항목 수

SELECT *
FROM YourTable
ORDER BY SomeColumn
OFFSET (@PageNumber - 1) * @PageSize ROWS
FETCH NEXT @PageSize ROWS ONLY;

💡 실행 결과
✅ 11번째 ~ 20번째 데이터를 조회합니다.


🔥 페이징 성능 최적화 팁

1️⃣ 적절한 인덱스 생성

  • ORDER BY에 사용되는 컬럼에 인덱스를 추가하면 속도가 빨라집니다.
  • 예시:
    
    CREATE INDEX idx_yourtable_somecolumn ON YourTable(SomeColumn);
    

2️⃣ 필요한 컬럼만 조회

  • SELECT * 대신 필요한 컬럼만 선택하면 성능이 향상됩니다.

3️⃣ ROW_NUMBER() 활용

  • OFFSETFETCH를 사용하기 어려운 경우, ROW_NUMBER()를 활용한 대체 방법도 가능합니다.
  • 
    WITH CTE AS (
        SELECT *, ROW_NUMBER() OVER (ORDER BY SomeColumn) AS RowNum
        FROM YourTable
    )
    SELECT *
    FROM CTE
    WHERE RowNum BETWEEN ((@PageNumber - 1) * @PageSize + 1) AND (@PageNumber * @PageSize);
    

🎯 결론

MSSQL에서 효율적인 페이징 쿼리를 작성하려면:
OFFSETFETCH를 활용
ORDER BY 필수 사용
✅ 인덱스를 활용해 성능 개선
ROW_NUMBER()를 활용한 대체 방법 고려

이 방법을 적용하면 대량 데이터에서도 빠르고 효율적인 페이징이 가능합니다! 🚀


📢 추가 최적화 방법이나 궁금한 점이 있다면 댓글로 남겨주세요!

태그: #MSSQL #페이징 #Paging #SQL쿼리 #OFFSET #FETCH #ORDERBY #성능최적화 #인덱스 #Index #ROWNUMBER #데이터베이스 #Database #쿼리작성 #대량데이터 #SQL팁

728x90