Penomboran adalah penting dalam pengambilan data aplikasi web. Dua cara biasa untuk melaksanakan penomboran adalah dengan menggunakan kaedah Skip() dan Take() LINQ, atau menulis pertanyaan SQL tersuai.
Kaedah Skip() dan Take() LINQ
LINQ (Language Integrated Query) menyediakan dua kaedah: Skip() dan Take() untuk paging. Kaedah ini melaksanakan paging dengan memanipulasi keputusan pertanyaan dalam ingatan tanpa mengakses pangkalan data. Apabila menggunakan Langkau(n) dan Ambil(m), LINQ menjana subkueri yang mendapatkan semula nombor (m) baris yang ditentukan daripada hasil pertanyaan asal, bermula selepas melangkau nombor (n) baris yang ditentukan.
Kaedah ini lebih cekap apabila saiz halaman (m) adalah kecil berbanding jumlah bilangan baris. Walau bagaimanapun, untuk set data yang besar dengan saiz halaman yang besar, Skip() dan Take() LINQ boleh menyebabkan kemerosotan prestasi akibat pemprosesan memori yang berlebihan.
Pertanyaan SQL
Pendekatan lain ialah melaksanakan paging secara langsung dalam pertanyaan SQL. Ini melibatkan penggunaan fungsi ROW_NUMBER() untuk menjana nombor baris bagi setiap rekod dan kemudian menapis hasil berdasarkan nombor halaman dan saiz halaman yang dikehendaki.
Untuk set data yang besar, pendekatan ini selalunya lebih cekap daripada menggunakan Skip() dan Take() LINQ kerana ia mengambil kesempatan daripada pengoptimuman terbina dalam enjin SQL untuk fungsi tetingkap seperti ROW_NUMBER(). Selain itu, pertanyaan SQL boleh diparameterkan dan disimpan dalam pangkalan data, menjadikannya mudah digunakan semula dan dioptimumkan oleh enjin SQL.
Pilih kaedah yang sesuai
Pilih untuk menggunakan kaedah Skip() dan Take() LINQ atau pertanyaan SQL untuk halaman, bergantung pada faktor berikut:
Secara umum, untuk set data yang besar dan senario kritikal prestasi, menggunakan pertanyaan SQL untuk melaksanakan paging ialah kaedah yang paling berkesan.
Atas ialah kandungan terperinci LINQ's Skip()/Take() vs. SQL Query for Paging: Mana Yang Lebih Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!