Tôi có một truy vấn cơ sở dữ liệu có thể dẫn đến một tập kết quả lớn. Máy khách hiển thị dữ liệu nhận dữ liệu qua mạng, do đó, ý tưởng là giảm thiểu lượng dữ liệu được truyền bằng cách chỉ lấy 50 kết quả đầu tiên từ cơ sở dữ liệu và gửi chúng đến máy khách. Sau đó, tôi sẽ cung cấp khả năng chuyển sang trang thứ hai để lấy 50 kết quả tiếp theo, v.v. (một cái gì đó tương tự như google cung cấp)
Câu hỏi đặt ra là cách hiệu quả để thực hiện phân trang. Tôi muốn đảm bảo rằng mssql sử dụng bộ nhớ cache càng nhiều càng tốt và điều tương tự không được thực hiện một lần nữa mỗi khi tôi thay đổi phân trang.
Có nhiều khách hàng đang truy vấn cơ sở dữ liệu cùng một lúc. Công cụ sql đã sử dụng: MS SQL 2005
Ý tưởng của tôi là:
- Sử dụng stHRenst chuẩn bị để đảm bảo chia sẻ kế hoạch thực hiện
- sử dụng biến ROW_COUNT để chỉ truy xuất các hàng cần thiết
Nhưng nó có thực sự là cách hiệu quả nhất? Hoặc bạn có nghĩ rằng sẽ tốt hơn nếu lấy toàn bộ tập kết quả và thực hiện phân trang trong mã gửi dữ liệu đến máy khách?
Cảm ơn bạn cho lời khuyên của bạn!
Trân trọng, Tomas