Menggunakan OFFSET
untuk penomboran dalam SQL Server boleh menjadi tidak cekap dengan set data yang besar. Penomboran set kekunci menawarkan alternatif yang lebih baik.
Tidak seperti penomboran set baris (yang mengimbas semua baris sebelumnya), penomboran set kekunci menggunakan indeks unik untuk mengakses terus titik permulaan halaman. Ini dengan ketara mengurangkan pengambilan data yang tidak perlu. Indeks unik pada kekunci penomboran (dan sebarang lajur pertanyaan tambahan) adalah penting untuk prestasi optimum.
Katakan kita mempunyai jadual bernama TableName
dengan indeks pada Id
dan kita perlu menomborkan menggunakan nilai Id
terkini.
Pertanyaan Awal (Halaman Pertama):
<code class="language-sql">SELECT TOP (@numRows) * FROM TableName ORDER BY Id DESC;</code>
Pertanyaan Seterusnya:
<code class="language-sql">SELECT TOP (@numRows) * FROM TableName WHERE Id < @lastId ORDER BY Id DESC;</code>
Di mana @lastId
ialah nilai Id
terendah daripada hasil halaman sebelumnya.
Untuk lajur yang tidak mempunyai nilai unik, masukkan lajur kedua dalam kedua-dua klausa `ORDER BY` dan `WHERE`, bersama-sama dengan indeks komposit pada kedua-dua lajur.
Pertimbangan Penting:
Atas ialah kandungan terperinci Bagaimanakah Penomboran Keyset Boleh Meningkatkan Kecekapan Penomboran SQL Server Berbanding OFFSET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!