다음을 통해 공유


TOP 및 PERCENT를 사용하여 결과 집합 제한

TOP 절을 사용하여 결과 집합으로 반환되는 행 수를 제한할 수 있습니다.

TOP ( expression ) [ PERCENT ] [ WITH TIES ]

expression은 반환될 행 수를 지정하는 숫자 식입니다. PERCENT를 지정하면 결과 집합 행이 expression으로 지정한 비율로 반환됩니다. 예를 들면 다음과 같습니다.

TOP (120) /*Return the top 120 rows of the result set. */
TOP (15) PERCENT /* Return the top 15 percent of the result set. */.
TOP(@n) /* Return the top @n rows of the result set, with the variable declaration: DECLARE @n AS BIGINT; SET @n = 2 */.

TOP 절이 포함된 SELECT 문에 ORDER BY 절이 있으면 정렬된 결과 집합에서 반환될 행이 선택됩니다. 전체 결과 집합은 지정된 순서대로 생성되며 정렬된 결과 집합에서 처음 n개의 행이 반환됩니다. 또한 WITH TIES를 지정하는 경우 이로 인해 expression에서 지정한 수가 초과되더라도 ORDER BY 절이 반환한 마지막 값을 포함하는 모든 행이 반환됩니다.

TOP과 SET ROWCOUNT 비교

결과 집합의 크기를 제한하는 또 다른 방법은 문을 실행하기 전에 SET ROWCOUNT n 문을 실행하는 것입니다. SET ROWCOUNT와 TOP의 차이점은 다음과 같습니다.

  • SET ROWCOUNT 제한은 ORDER BY가 계산된 후 결과 집합에 행을 작성하는 데 적용됩니다. ORDER BY가 지정된 경우 지정된 ORDER BY 분류에 따라 정렬된 값 집합에서 n개의 행이 선택되면 SELECT 문이 종료됩니다.
  • TOP 절은 이 절이 지정된 단일 SELECT 문에 적용됩니다. SET ROWCOUNT는 SET ROWCOUNT 0을 실행하여 옵션을 해제하는 것과 같이 다른 SET ROWCOUNT 문이 실행될 때까지 계속 적용됩니다.
    ms187043.note(ko-kr,SQL.90).gif중요:
    SQL Server 의 다음 버전에서는 DELETE, INSERT 및 UPDATE 문이 SET ROWCOUNT 사용에 영향을 받지 않게 됩니다. 새 개발 작업에서는 DELETE, INSERT 및 UPDATE 문에 SET ROWCOUNT 옵션을 사용하지 않도록 하고 현재 이 옵션을 사용하는 응용 프로그램은 수정하십시오. 현재 SET ROWCOUNT가 사용되고 있는 DELETE, INSERT 및 UPDATE 문은 TOP을 사용하여 다시 작성하는 것이 좋습니다.
    현재 SELECT 문에 SET ROWCOUNT를 그대로 사용하고 있더라도 다음과 같은 이유로 SELECT 문에는 TOP을 사용하는 것이 SET ROWCOUNT를 사용하는 것보다 좋습니다. - SELECT, INSERT, UPDATE 및 DELETE 문에 SET ROWCOUNT를 사용하면 해당 문이 지정된 행 수에 영향을 미치는 경우 대부분 처리가 중단됩니다. 이러한 결과는 트리거 실행 내부에서도 동일하게 나타납니다. - SELECT 문의 일부로 쿼리 최적화 프로그램은 쿼리에 대한 실행 계획을 생성하는 과정에서 TOP 절에 있는 *expression* 값을 사용할 수 있습니다. SET ROWCOUNT는 쿼리를 실행하는 문 외부에서 사용되기 때문에 이 값으로는 쿼리에 대한 쿼리 계획을 생성할 수 없습니다.

참고 항목

관련 자료

TOP(Transact-SQL)
SELECT(Transact-SQL)
SET ROWCOUNT (Transact-SQL)

도움말 및 정보

SQL Server 2005 지원 받기