EDIT:Tôi vẫn đang chờ thêm câu trả lời. Cảm ơn!Phương pháp phân trang hiệu quả thông qua bộ kết quả rất lớn trong SQL Server 2005 là gì?
Trong SQL 2000 ngày, tôi sử dụng để sử dụng bảng phương pháp tạm thời mà bạn tạo ra một bảng tạm thời với cột sắc mới và khóa chính sau đó chọn nơi cột sắc giữa A và B.
Khi SQL 2005 đến dọc theo tôi phát hiện ra khoảng Row_Number()
và tôi đã sử dụng nó kể từ ...
Nhưng bây giờ, tôi đã tìm thấy vấn đề về hiệu suất nghiêm trọng với Row_Number()
. Nó hoạt động rất tốt khi bạn đang làm việc với các tập kết quả không quá lớn và sắp xếp trên một cột nhận dạng. Tuy nhiên, nó hoạt động rất kém khi bạn đang làm việc với tập hợp kết quả lớn như hơn 10.000 bản ghi và phân loại nó trên cột không nhận dạng. Row_Number()
hoạt động kém ngay cả khi bạn sắp xếp theo cột nhận dạng nếu tập hợp kết quả là hơn 250.000 bản ghi. Đối với tôi, nó đến một điểm mà nó ném một lỗi, "timeout lệnh!"
gì bạn sử dụng để làm phân trang kết quả lớn đặt trên SQL 2005? Phương pháp bảng tạm thời vẫn tốt hơn trong trường hợp này? Tôi không chắc chắn nếu phương pháp này using temp table with SET ROWCOUNT sẽ hoạt động tốt hơn ... Nhưng một số người nói rằng có vấn đề về việc đưa ra số hàng sai nếu bạn có khóa chính nhiều cột.
Trong trường hợp của tôi, tôi cần có khả năng sắp xếp tập hợp kết quả theo cột loại ngày ... cho ứng dụng web sản xuất của tôi.
Hãy cho tôi biết những gì bạn sử dụng cho phân trang hiệu suất cao trong SQL 2005. Và tôi cũng muốn biết một cách thông minh để tạo các chỉ mục. Tôi nghi ngờ việc chọn đúng các khóa chính và/hoặc chỉ mục (được nhóm/không được nhóm) sẽ đóng một vai trò lớn ở đây.
Xin cảm ơn trước.
P.S. Có ai biết stackoverflow sử dụng gì không?
EDIT: Mine trông giống như ...
SELECT postID, postTitle, postDate
FROM
(SELECT postID, postTitle, postDate,
ROW_NUMBER() OVER(ORDER BY postDate DESC, postID DESC) as RowNum
FROM MyTable
) as DerivedMyTable
WHERE RowNum BETWEEN @startRowIndex AND (@startRowIndex + @maximumRows) - 1
postID: Int, Identity (auto-increment), Primary key
ghi lùi: DateTime
EDIT: Có phải tất cả mọi người đang sử dụng Row_Number() không?
Cảm ơn bạn đã nhập. Tôi đã cập nhật câu hỏi của mình. –