달력

5

« 2025/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

'DataBase'에 해당되는 글 1

  1. 2016.03.14 SQL Server 2012의 강화된 T-SQL : 페이징 - OffSet/Fetch

SQL Server 2012에서는 Offset/Fetch 구문을 통해 효과적으로 페이징 쿼리를 작성할 수 있습니다. 


1. 첫번째 페이지 쿼리 

SELECT A, B, C, D, E FROM TABLENAME

ORDER BY A DESC  

OFF SET 0 ROWS FETCH NEXT 10 ROWS ONLY


2. 두번째 페이지 쿼리

SELECT A, B, C, D, E FROM TABLENAME

ORDER BY A DESC  

OFF SET 10 ROWS FETCH NEXT 10 ROWS ONLY


3. 프로시저 

CREATE PROC USP_GETPAGE

@PAGE INT

AS

DECLARE @FETCH INT =10;

DECLARE @OFFSET INT= (@PAGE-1)*@Fetch

 

SELECT A, B, C, D, E FROM TABLENAME

ORDER BY A DESC  

OFFSET @OFFSET ROWS

    FETCH NEXT @FETCH ROWS ONLY;

GO


* 제한 사항

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

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

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

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

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


* 안정된 최적화 조건

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

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


자세한 설명은 MSDN 에서 확인 가능합니다

http://msdn.microsoft.com/ko-kr/library/ms188385(v=sql.110).aspx#Offset



:
Posted by 알 수 없는 사용자