Mengoptimumkan Penomboran dalam Pelayan SQL untuk Set Data Besar
Membentangkan set data yang besar kepada pengguna memerlukan penomboran - hanya menunjukkan sebahagian daripada hasil setiap halaman. Walau bagaimanapun, melaksanakan penomboran tanpa menjejaskan prestasi adalah penting, terutamanya apabila memerlukan jumlah kiraan hasil terlebih dahulu.
Versi Pelayan SQL Lama (2000-2008): Penomboran Baris
Sebelum SQL Server 2012, penomboran baris ialah teknik penomboran standard. Ini melibatkan pemberian nombor baris menggunakan ROW_NUMBER()
dan penapisan berdasarkan saiz dan nombor halaman. Walaupun berfungsi, pendekatan ini terbukti tidak cekap dengan set data yang banyak.
SQL Server 2012 dan Seterusnya: OFFSET
dan FETCH
SQL Server 2012 memperkenalkan klausa OFFSET
dan FETCH
unggul. Ini terus melangkau bilangan baris yang ditentukan dan hanya mengambil subset yang diperlukan. Ini dengan ketara meningkatkan prestasi untuk set data yang besar dengan menghapuskan overhed penomboran baris.
Pertanyaan Ilustrasi
Pertanyaan berikut menunjukkan mendapatkan semula 10 baris awal dan jumlah kiraan baris menggunakan OFFSET
dan FETCH
dalam SQL Server 2012 dan kemudian:
<code class="language-sql">DECLARE @RowsPerPage INT = 10; WITH TotalResults AS ( SELECT COUNT(*) OVER() AS TotalRows FROM TableName ) SELECT * FROM TableName ORDER BY id OFFSET 0 ROWS FETCH NEXT @RowsPerPage ROWS ONLY; SELECT TotalRows FROM TotalResults;</code>
Nota Penting:
ORDER BY
adalah wajib apabila menggunakan OFFSET
dan FETCH
.OFFSET
mesti mengiringi FETCH
; mereka tidak boleh digunakan dengan TOP
.OFFSET
dan FETCH
secara mendadak meningkatkan prestasi, terutamanya dengan set data yang luas.Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghina Set Data Besar dengan Cekap dalam Pelayan SQL Sambil Mengekalkan Prestasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!