Anda memilih 50 baris teratas yang diurutkan berdasarkan e.uon desc
. Indeks yang dimulai dengan uon
akan mempercepat kueri:
create index IX_Empl_Uon on dbo.empl (uon)
Indeks akan memungkinkan SQL Server untuk memindai baris N teratas dari indeks ini. N adalah angka tertinggi di pagination Anda:untuk halaman ke-3 dari 50 elemen, N sama dengan 150. SQL Server kemudian melakukan 50 pencarian kunci untuk mengambil baris penuh dari indeks berkerumun. Sejauh yang saya tahu, ini adalah contoh buku teks di mana indeks dapat membuat perbedaan besar.
Tidak semua pengoptimal kueri akan cukup pintar untuk memperhatikan bahwa row_number() over ... as rn
dengan where
rn between 1 and 50
berarti 50 baris teratas. Tetapi SQL Server 2012 melakukannya. Ini menggunakan indeks baik untuk halaman pertama dan berturut-turut, seperti row_number() between 50 and 99
.