큰 결과 집합을 반환하는 기존 저장 프로 시저가 있습니다. 문제는 결과 집합이 너무 커서 한꺼번에 모두 가져온 다음 웹 측에서 페이징 및 정렬을 수행 할 수 없다는 것입니다.기존 저장 프로 시저로 페이징 및 정렬
저장 프로 시저를 변경하지 않고 다른 SQL 코드로 래핑하여 특정 결과 만 빠른 방식으로 되돌릴 수 있습니다. 같은
뭔가 :
EXEC는 옵션이 매우 제한되어 저장 프로 시저 코드를 변경하지 않고
큰 결과 집합을 반환하는 기존 저장 프로 시저가 있습니다. 문제는 결과 집합이 너무 커서 한꺼번에 모두 가져온 다음 웹 측에서 페이징 및 정렬을 수행 할 수 없다는 것입니다.기존 저장 프로 시저로 페이징 및 정렬
저장 프로 시저를 변경하지 않고 다른 SQL 코드로 래핑하여 특정 결과 만 빠른 방식으로 되돌릴 수 있습니다. 같은
뭔가 :
EXEC는 옵션이 매우 제한되어 저장 프로 시저 코드를 변경하지 않고
50 ORDER을 제한 the_sp.
당신은 그것을 여전히 저장된 프로 시저 자체가 작품의 같은 양의 일을 끝낼 (그리고 임시 테이블 단계에 대한 약간의 오버 헤드를 추가)하지만 결과의 양을 줄일 것 분명히CREATE TABLE #results(
[rownum] [int] identity(1,1) NOT NULL,
...Other Columns matching stored procedure result format
)
insert into #results
EXECUTE dbo.the_sp
SELECT * FROM #results
WHERE rownum BETWEEN 50 AND 100
을 할 수
고객에게 돌아갑니다.
이를 완화하기 위해, 그리고 하나그러나이 같은
를 표시 후 저장 프로 시저의 논리에 따라, 당신은이 페이지에 속하는 불필요한 결과를 반환 중지하려면SET ROWCOUNT 100
EXECUTE dbo.the_sp
을 사용할 수 있습니다 저장된 proc의 모든 문장에 적용됩니다 (최종 결과를 클라이언트에 반환하는 것뿐만 아니라). 이것은 적합하지 않을 수 있습니다.
다음을 참조하십시오 : SQL Server 2005 Paging – The Holy Grail (무료 등록 필요) (적용 대상 : SQL Server 2005 이상)