테이블에 10,000 개의 레코드가있는 경우처럼 데이터베이스 측 페이징을 사용해야합니다. 그런 다음 처음으로 100 개 레코드를 가져와야합니다. SQL Server 2005를 사용하고 있습니다. 저장 프로 시저 코드를 제공하십시오. 그것은 서버 측 페이징을 수행하는 (내 경우) 가장 효율적인 방법이 될 입증되었습니다 2005 년데이터베이스 쪽 페이징
1
A
답변
2
당신은 SQL 서버부터 사용할 수있는 ROW_NUMBER() 기능을 살펴 있어야합니다.
예 :
SELECT *
FROM (
SELECT col1, col2, col3,
ROW_NUMBER() OVER(ORDER BY col1 ASC) AS rownbr
FROM table
WHERE col2 = 'something'
) AS Query
WHERE rownbr BETWEEN 1 AND 10
ORDER BY rownbr
당신은 당신이 OVER() 문에 의한 주문 할 열 및 WHERE 문 외부에서 검색 할 첫 번째와 마지막 행을 설정할 수 있습니다. 당신은 실제로 당신이 페이지 번호가 페이지를 시도하는 경우
1
, 당신은 다음과 같이 뭔가를 할 수 있습니다
Create Procedure GetPagedStuff(@PageNumber int, @PageSize int)
As
;With RankedRows As
(
Select ...
, Row_Number() Over (Order By SomeColumn) As Num
, Count(NonNullColumn) Over() As TotalRows
From MyTable
)
Select ...
From RankedRows
Where Num > (@PageNumber - 1) * @PageSize
And Num <= @PageNumber * @PageSize
Return
-- example call
Exec GetPagedStuff @PageNumber = 1, @PageSize = 100
1
제이슨 토마스, ROW_NUMBER() 함수는 가장 좋은 건입니다 제안한다. 그러나 WHERE 절을 만족하는 레코드 수가 매우 많으면 기본 키를 검색 한 다음 하위 테이블을 동일한 테이블로 다시 결합하여 다른 열을 얻을 수 있습니다.
예 :
SELECT e.col1, e.col2, e.col3
FROM Table1 e
JOIN
(SELECT ID, rownum= ROW_NUMBER()
FROM Table1
WHERE col1 = @filterParam
ORDER BY LastName)
f ON f.ID = e.ID
WHERE f.rownum BETWEEN 100 AND 150
2
DECLARE @PageSize INT,
@PageNumber INT,
@FirstRow INT,
@LastRow INT
SELECT @PageSize = 20,
@PageNumber = 1
SELECT @FirstRow = (@PageNumber - 1) * @PageSize + 1,
@LastRow = (@PageNumber - 1) * @PageSize + @PageSize ;
WITH Members AS
(
SELECT Col1,Col2,Col3,
ROW_NUMBER() OVER (ORDER BY Col1 DESC) AS RowNumber
FROM Table
)
SELECT Col1,Col2,..,..,..,
FROM Members
WHERE RowNumber BETWEEN @FirstRow AND @LastRow
ORDER BY Col1 ASC;
+2
HTTP를 참조 잘 덮여 : // www.sqlteam.com/article/server-side-paging-using-sql-server-2005 – Sutirth
관련 문제
- 1. jQgrid로 서버 쪽 페이징
- 2. MVCContrib 표가있는 서버 쪽 페이징
- 3. 페이징
- 4. NHibernate에서 페이징
- 5. 서버 쪽/클라이언트 쪽 coffeescript 코드 테스트
- 6. Silverlight XAML의 클라이언트 쪽 또는 서버 쪽
- 7. 클라이언트 쪽 엄지 생성 또는 서버 쪽?
- 8. jQuery로 페이징
- 9. ActiveRecord의 페이징
- 10. 리피터에서 페이징
- 11. 페이징 ObjectDataSource를
- 12. 페이징 대안
- 13. 페이징 메커니즘
- 14. GRIDVIEW 페이징
- 15. slickGrid의 페이징
- 16. DataGridView 페이징
- 17. Gridview에서 페이징
- 18. 페이징 전략
- 19. 페이징 Gridview
- 20. 페이징 javascript
- 21. 객관화 페이징
- 22. DataGrid 페이징
- 23. jsf1.1에서 페이징
- 24. 페이징 : 검색 결과 저장
- 25. 서버 쪽 이벤트 전에 클라이언트 쪽 코드를 호출하는 방법?
- 26. 서버 쪽/클라이언트 쪽 또는 양쪽 사용자 입력 유효성 검사
- 27. Javascript : 클라이언트 쪽 입력란에 서버 쪽 입력 필드
- 28. 자바 스크립트 쪽 스크롤
- 29. 서버 쪽 Active 스크립팅
- 30. 서버 쪽 스크립팅 방법
는 (무료) 등록이 필요하지만,이 두 부분 시리즈 http://www.sqlservercentral.com/articles/paging/69892/ –