2012-03-18 1 views
0
select top 1000 from table1. 

그럼 어떻게하면 다음 1000으로 계속 진행하고 테이블에서 계속 진행할 수 있습니까? 거기에 레코드 수를 수백만 십자가, 나는 걸릴 및 프로세스가 긴 과정에서 정보를 처리 .. 그래서, Cursor 1000 및 다음 1000 검색하여 사용하는 생각. 다른 가장 좋은 방법은?첫 번째 1000 개의 레코드를 검색 한 후 다음 1000 번째 레코드를 검색하는 방법은 무엇입니까?

+4

이 작업을 수행하는 중립적 인 방법은 없습니다. 어떤 RDBMS를 사용하고 있습니까? –

+0

그리고 그 버전은 무엇입니까? –

+0

Nettezza를 사용 중이라면 SQL 서버에 ..!? – user1066231

답변

1

당신은 SQL Server 2005 또는 당신이 ROW_NUMBER() 함수를 사용하여 다음 이상을 사용하는 경우 :

Using ROW_NUMBER() to paginate your data with SQL Server 2005 and ASP.NET

그러나 빌리 댓글을 달았습니다,이는 범용의 SQL 함수가 아닙니다

.

커서는 특히 사용자가 결과를 페이징하는 경우와 같이 연결이 끊어진 쿼리를 수행하는 경우 매우 위험합니다.

2005 년 이전 SQL Server를 사용하거나 일반적인 방법을 찾고 있다면 일반적인 방법은 결과를 ID 인덱스가있는 임시 테이블로 선택한 다음 그 중 하나를 선택하는 것입니다 table> index> = pagenumber * pageSize & & 인덱스 < (페이지 번호 * pageSize) + pageSize

+0

Netezza를 사용하고 있는데, 내가 아는 건 SQL 구문의 구식 표준을 지원하기 때문에 row_number()와 같은 함수에 액세스 할 수 없지만 임시 테이블을 만들 수 있습니다. Netezza 플랫폼을 사용하면 거기에 많은 양의 데이터가 있음을 알 수 있으며 페이지 매김을위한 임시 테이블을 만드는 것이 매우 위험 할 수 있습니다. –

+0

Netezza에 row_number() 분석 함수가 있습니다. – redcayuga

+0

설명을위한 THanks , 알고있는 것이 좋다. –