Saya memiliki permintaan basis data yang dapat menghasilkan kumpulan hasil yang besar. Klien yang menampilkan data menerima data melalui jaringan, jadi idenya adalah untuk meminimalkan jumlah data yang ditransfer dengan mengambil hanya 50 hasil pertama dari database dan mengirimkannya ke klien. Lalu saya akan memberikan kemungkinan untuk melompat ke halaman kedua untuk mengambil 50 hasil berikutnya, dll. (Sesuatu yang mirip seperti yang ditawarkan google)
Pertanyaannya adalah apa cara efektif menerapkan paging. Saya ingin memastikan bahwa mssql menggunakan cache sebanyak mungkin dan hal yang sama tidak dieksekusi sekali lagi setiap kali saya mengubah halaman.
Ada lebih banyak klien yang menanyakan database dalam waktu bersamaan. Mesin sql yang digunakan: MS SQL 2005
Gagasan saya adalah:
- Gunakan statemenst sql siap untuk memastikan berbagi rencana eksekusi
- gunakan ROW_COUNT variabel untuk mengambil hanya baris yang diperlukan
Tetapi apakah ini benar-benar cara yang paling efektif? Atau apakah Anda berpikir bahwa akan lebih baik untuk mengambil seluruh hasil yang ditetapkan dan menerapkan paging dalam kode yang mengirimkan data ke klien?
Terima kasih atas tipsnya!
Salam, Tomas
sumber
Itu tergantung pada lingkungan Anda. Saya akan menyiapkan tes menggunakan kedua metode dan melihat mana yang paling cocok untuk Anda. Secara pribadi, saya akan halaman di server. Semakin sedikit data melalui kabel dan semakin sedikit data dalam RAM klien, semakin baik. Jika Anda dapat mengontrol spesifikasi mesin klien, semua lalu lintas melalui LAN nonsaturated dan klien selalu halaman melalui beberapa halaman dengan cepat, maka Anda mungkin ingin halaman di klien.
sumber