Jika Anda sudah menggunakan analytics (ROW_NUMBER() OVER ...
) kemudian menambahkan fungsi analitik lain pada partisi yang sama akan menambah biaya kueri yang dapat diabaikan.
Di sisi lain, ada banyak cara lain untuk melakukan pagination, salah satunya menggunakan rownum
:
SELECT *
FROM (SELECT A.*, rownum rn
FROM (SELECT *
FROM your_table
ORDER BY col) A
WHERE rownum <= :Y)
WHERE rn >= :X
Metode ini akan lebih unggul jika Anda memiliki indeks yang sesuai pada kolom pemesanan. Dalam hal ini, mungkin lebih efisien menggunakan dua kueri (satu untuk jumlah total baris, satu untuk hasil).
Kedua metode tersebut sesuai, tetapi secara umum jika Anda menginginkan jumlah baris dan kumpulan pagination, maka penggunaan analytics lebih efisien karena Anda hanya melakukan kueri baris sekali.