Dapatkan 20 teratas. Jika mereka tidak memenuhi persyaratan, lakukan kueri tambahan untuk mendapatkan bagian yang hilang. Anda harus dapat menemukan keseimbangan antara jumlah kueri dan jumlah baris yang dikembalikan setiap kali.
Jika Anda mendapatkan 100 teratas, itu mungkin memenuhi persyaratan 90% dari waktu dan akan lebih murah dan lebih cepat daripada 10 kueri terpisah.
Jika SQL Server saya bisa membantu lebih...
Sebenarnya, saya punya ide lain. Jalankan proses setiap 5 menit yang menghitung daftar dan menyimpannya di dalam tabel. Membuat DML terhadap tabel terkait membatalkan cache sehingga tidak digunakan sampai diisi ulang (mungkin artikel telah dihapus). Jika cache tidak valid, Anda akan kembali menghitungnya dengan cepat... Dan tetap dapat menggunakannya untuk mengisi kembali cache.
Dimungkinkan untuk memperbarui daftar cache secara strategis daripada menghitung ulang. Tapi itu bisa menjadi tantangan nyata.
Ini akan membantu baik dengan kecepatan kueri dan mengurangi beban pada database Anda. Seharusnya tidak masalah jika daftar artikel Anda 5 menit dari tanggal. Heck, bahkan 1 menit mungkin berhasil.