Pengenalan
Melaksanakan penomboran dalam aplikasi web adalah penting untuk menguruskan penomboran. Artikel ini meneroka kecekapan dan kes penggunaan dua kaedah paging biasa: menggunakan kaedah Skip() dan Take() LINQ dan menggunakan pertanyaan SQL untuk melaksanakan paging tersuai.
Skip() dan Ambil() LINQ
Kaedah Skip() dan Take() LINQ menyediakan cara mudah untuk halaman dalam ingatan. Kaedah Skip() melangkau bilangan elemen tertentu dari permulaan jujukan, manakala kaedah Take() hanya mendapatkan semula bilangan elemen tertentu.
Pelaksanaan pertanyaan SQL
Menggunakan pertanyaan SQL untuk melaksanakan paging memerlukan penggunaan klausa OFFSET dan FETCH. Menggunakan fungsi tetingkap ROW_NUMBER(), anda boleh menentukan kedudukan permulaan dan penamat data yang hendak diambil.
Pertimbangan kecekapan
Kecekapan pelaksanaan pertanyaan LINQ dan SQL bergantung pada banyak faktor, seperti:
Pilih kaedah yang sesuai
Contoh
Pertimbangkan pertanyaan LINQ berikut:
<code>var query = (from c in context.Cities select c).Skip(3).Take(3);</code>
Pertanyaan ini akan ditukar kepada pertanyaan yang serupa dengan pertanyaan SQL berikut:
<code>SELECT [t1].[CodCity], [t1].[CodCountry], [t1].[CodRegion], [t1].[Name], [t1].[Code] FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY [t0].[CodCity], [t0].[CodCountry], [t0].[CodRegion], [t0].[Name], [t0].[Code]) AS [ROW_NUMBER], [t0].[CodCity], [t0].[CodCountry], [t0].[CodRegion], [t0].[Name], [t0].[Code] FROM [dbo].[City] AS [t0] ) AS [t1] WHERE [t1].[ROW_NUMBER] BETWEEN 4 AND 6 ORDER BY [t1].[ROW_NUMBER]</code>
Pertanyaan SQL ini menggunakan fungsi tetingkap ROW_NUMBER() Over … untuk mencipta corak akses data bertingkap yang membolehkan paging yang cekap.
Atas ialah kandungan terperinci LINQ's Skip()/Take() vs. SQL OFFSET/FETCH: Pendekatan Paging Mana Yang Lebih Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!