Rumah > pangkalan data > tutorial mysql > Adakah Terdapat SQL Langsung yang Setara dengan Skip() dan Take() LINQ?

Adakah Terdapat SQL Langsung yang Setara dengan Skip() dan Take() LINQ?

Susan Sarandon
Lepaskan: 2024-12-15 15:27:20
asal
887 orang telah melayarinya

Is There a Direct SQL Equivalent to LINQ's Skip() and Take()?

Langkau dan Ambil dalam SQL: Setara LINQ

Kaedah .Skip() dan .Take() LINQ menyediakan cara yang mudah untuk berfungsi dengan subset data dalam ingatan. Walau bagaimanapun, dalam situasi di mana sumber data asas ialah pangkalan data SQL yang besar, selalunya lebih baik untuk melaksanakan operasi ini secara langsung dalam SQL dan bukannya dalam ingatan. Ini mengelakkan overhed memindahkan sejumlah besar data ke dalam memori.

Satu senario sedemikian ialah apabila anda perlu memilih julat baris tertentu daripada jadual pangkalan data. LINQ menyediakan kaedah .Skip() dan .Take() untuk tujuan ini, tetapi adakah terdapat persamaan SQL langsung?

SQL Server 2012 and Above

SQL Server 2012 dan ke atas memperkenalkan sintaks baharu untuk mengimbangi baris dan mengehadkan:

OFFSET (@Skip) ROWS
FETCH NEXT (@Take) ROWS ONLY
Salin selepas log masuk

Untuk memilih baris 1000-1100 daripada jadual tertentu, anda akan menggunakan pertanyaan berikut:

SELECT *
FROM Sales.SalesOrderHeader 
ORDER BY OrderDate
OFFSET 1000 ROWS
FETCH NEXT 100 ROWS ONLY
Salin selepas log masuk

Pertanyaan ini akan melaksanakan langkah berikut:

  1. Isih jadual 'Sales.SalesOrderHeader' dalam tertib menaik mengikut Lajur 'OrderDate'.
  2. Langkau 1000 baris pertama menggunakan klausa 'OFFSET'.
  3. Ambil 100 baris seterusnya menggunakan klausa 'FETCH NEXT'.

Penyelesaian ini jauh lebih cekap daripada melakukan operasi yang sama dalam ingatan, kerana ia mengelakkan keperluan untuk memilih semua baris, hanya untuk membuang 1000 pertama dan pilih 100 seterusnya secara manual.

Atas ialah kandungan terperinci Adakah Terdapat SQL Langsung yang Setara dengan Skip() dan Take() LINQ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan