Jadual Kandungan
Kaedah 1: Tiga gelung
Idea
Pelaksanaan kod
Hasil pertanyaan dan masa
Kaedah 2: Gunakan maks (kunci utama)
Keputusan pertanyaan dan masa
Kaedah 3: Gunakan kata kunci row_number
Pelaksanaan SQL
Kaedah jenis keempat: offset /fetch next (hanya tersedia dalam versi 2012 dan ke atas)
Keputusan dan masa berjalan
Prosedur tersimpan berkapsul
Ringkasan
Rumah pangkalan data SQL Apakah kaedah paging dalam pelayan SQL?

Apakah kaedah paging dalam pelayan SQL?

Aug 06, 2021 am 09:22 AM

Artikel ini bercakap tentang kaedah halaman pelayan SQL, menggunakan pelayan SQL versi 2012. Dalam yang berikut, pageIndex digunakan untuk mewakili bilangan halaman, dan pageSize mewakili rekod yang terkandung pada halaman. Dan yang berikut melibatkan contoh khusus, tetapkan pertanyaan halaman 2, setiap halaman mengandungi 10 rekod.

Pertama sekali, mari kita bincangkan tentang perbezaan antara paging pelayan SQL dan paging MySQL boleh dilengkapkan secara langsung dengan menggunakan had (pageIndex-1) dan pageSize, tetapi pelayan SQL tidak mempunyai kata kunci had. hanya sesuatu seperti had Kata kunci teratas. Jadi paging lebih menyusahkan.

Saya hanya tahu empat jenis paging pelayan SQL: gelung tiga kali ganda menggunakan maks (kunci utama) menggunakan kata kunci row_number, offset/fetch kata kunci seterusnya (diringkaskan dengan mengumpul kaedah orang lain di Internet , sepatutnya ada sahaja); empat kaedah ini pada masa ini, kaedah lain adalah berdasarkan ubah bentuk ini).

Sebahagian daripada rekod jadual pelajar untuk disoal

Apakah kaedah paging dalam pelayan SQL?

Kaedah 1: Tiga gelung

Idea

Mula-mula ambil halaman 20 teratas, dan kemudian terbalikkan tertib, dan ambil 10 rekod pertama dalam susunan terbalik, supaya anda boleh mendapatkan data yang diperlukan untuk paging, tetapi tertib terbalik Anda kemudiannya boleh mengembalikannya dalam susunan terbalik, atau anda boleh berhenti mengisih dan menyerahkannya terus ke bahagian hadapan untuk diisih.

Terdapat kaedah lain yang boleh dianggap sebagai jenis ini Saya tidak akan meletakkan kod di sini untuk mengecualikan 10 rekod ini, dan kemudian Pertanyaan.

Pelaksanaan kod

-- 设置执行时间开始,用来查看性能的
set statistics time on ;
-- 分页查询(通用型)
select * 
from (select top pageSize * 
from (select top (pageIndex*pageSize) * 
from student 
order by sNo asc ) -- 其中里面这层,必须指定按照升序排序,省略的话,查询出的结果是错误的。
as temp_sum_student 
order by sNo desc ) temp_order
order by sNo asc

-- 分页查询第2页,每页有10条记录
select * 
from (select top 10 * 
from (select top 20 * 
from student 
order by sNo asc ) -- 其中里面这层,必须指定按照升序排序,省略的话,查询出的结果是错误的。
as temp_sum_student 
order by sNo desc ) temp_order
order by sNo asc
;
Salin selepas log masuk

Hasil pertanyaan dan masa

Apakah kaedah paging dalam pelayan SQL?

Apakah kaedah paging dalam pelayan SQL?

Kaedah 2: Gunakan maks (kunci utama)

  Mula-mula, atas 11 rekod baris pertama, kemudian gunakan maks (id) untuk mendapatkan id terbesar, dan kemudian tanya semula 10 rekod teratas dalam jadual ini, tetapi anda mesti menambah syarat, di mana id>

Pelaksanaan kod

set statistics time on;
-- 分页查询(通用型)
select top pageSize * 
from student 
where sNo>=
(select max(sNo) 
from (select top ((pageIndex-1)*pageSize+1) sNo
from student 
order by  sNo asc) temp_max_ids) 
order by sNo;


-- 分页查询第2页,每页有10条记录
select top 10 * 
from student 
where sNo>=
(select max(sNo) 
from (select top 11 sNo
from student 
order by  sNo asc) temp_max_ids) 
order by sNo;
Salin selepas log masuk

Keputusan pertanyaan dan masa

Apakah kaedah paging dalam pelayan SQL?

Apakah kaedah paging dalam pelayan SQL?

Kaedah 3: Gunakan kata kunci row_number

untuk terus menggunakan fungsi row_number() over(order by id) untuk mengira bilangan baris dan pilih nombor baris yang sepadan untuk dikembalikan Walau bagaimanapun, kata kunci ini hanya tersedia dalam pelayan SQL 2005 atau ke atas .

Pelaksanaan SQL

set statistics time on;
-- 分页查询(通用型)
select top pageSize * 
from (select row_number() 
over(order by sno asc) as rownumber,* 
from student) temp_row
where rownumber>((pageIndex-1)*pageSize);

set statistics time on;
-- 分页查询第2页,每页有10条记录
select top 10 * 
from (select row_number() 
over(order by sno asc) as rownumber,* 
from student) temp_row
where rownumber>10;
Salin selepas log masuk

Hasil pertanyaan dan masa

Apakah kaedah paging dalam pelayan SQL?

Apakah kaedah paging dalam pelayan SQL?

Kaedah jenis keempat: offset /fetch next (hanya tersedia dalam versi 2012 dan ke atas)

Pelaksanaan kod

set statistics time on;
-- 分页查询(通用型)
select * from student
order by sno 
offset ((@pageIndex-1)*@pageSize) rows
fetch next @pageSize rows only;

-- 分页查询第2页,每页有10条记录
select * from student
order by sno  
offset 10 rows
fetch next 10 rows only ;
Salin selepas log masuk

offset A baris, buang rekod A pertama, ambil baris B seterusnya sahaja, untuk Kemudian baca data B.

Keputusan dan masa berjalan

Apakah kaedah paging dalam pelayan SQL?

Apakah kaedah paging dalam pelayan SQL?

Prosedur tersimpan berkapsul

Akhir sekali, saya merangkumkan paging prosedur tersimpan adalah mudah untuk semua orang memanggil, supaya apabila tiba masanya untuk menulis paging, anda boleh terus memanggil prosedur tersimpan ini.

Prosedur tersimpan paging

create procedure paging_procedure
(	@pageIndex int, -- 第几页
	@pageSize int  -- 每页包含的记录数
)
as
begin 
	select top (select @pageSize) *     -- 这里注意一下,不能直接把变量放在这里,要用select
	from (select row_number() over(order by sno) as rownumber,* 
			from student) temp_row 
	where rownumber>(@pageIndex-1)*@pageSize;
end

-- 到时候直接调用就可以了,执行如下的语句进行调用分页的存储过程
exec paging_procedure @pageIndex=2,@pageSize=10;
Salin selepas log masuk

Ringkasan

Berdasarkan masa pelaksanaan empat kaedah paging di atas, kita boleh tahu bahawa antara empat kaedah paging di atas, yang kedua dan ketiga Ketiga, prestasi kaedah ketiga dan keempat adalah hampir sama, tetapi prestasi kaedah pertama adalah sangat lemah dan tidak disyorkan. Selain itu, blog ini sedang menguji sejumlah kecil data dan masih belum melambai sejumlah besar data, jadi tidak jelas kaedah mana yang mempunyai prestasi yang lebih baik apabila sejumlah besar data perlu dihalakan. Saya mengesyorkan kaedah keempat di sini Lagipun, kaedah keempat adalah kaedah baru yang diperkenalkan selepas syarikat pelayan SQL dinaik taraf, jadi ia secara teorinya harus mempunyai prestasi dan kebolehbacaan yang lebih baik.

Cadangan berkaitan: "tutorial mysql"

Atas ialah kandungan terperinci Apakah kaedah paging dalam pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah jenis pembahagian data yang berbeza dalam SQL (mendatar, menegak)? Apakah jenis pembahagian data yang berbeza dalam SQL (mendatar, menegak)? Mar 13, 2025 pm 02:01 PM

Artikel ini membincangkan pembahagian data mendatar dan menegak dalam SQL, yang memberi tumpuan kepada kesannya terhadap prestasi dan skalabilitas. Ia membandingkan manfaat dan pertimbangan untuk memilih di antara mereka.

Bagaimanakah saya menggunakan fungsi agregat dalam SQL untuk meringkaskan data (SUM, AVG, Count, Min, Max)? Bagaimanakah saya menggunakan fungsi agregat dalam SQL untuk meringkaskan data (SUM, AVG, Count, Min, Max)? Mar 13, 2025 pm 01:50 PM

Artikel ini menerangkan cara menggunakan fungsi agregat SQL (SUM, AVG, Count, Min, Max) untuk meringkaskan data, memperincikan kegunaan dan perbezaannya, dan bagaimana menggabungkannya dalam pertanyaan.

Apakah risiko keselamatan menggunakan SQL dinamik dan bagaimana saya dapat mengurangkannya? Apakah risiko keselamatan menggunakan SQL dinamik dan bagaimana saya dapat mengurangkannya? Mar 13, 2025 pm 01:59 PM

Artikel ini membincangkan risiko keselamatan SQL dinamik, yang memberi tumpuan kepada suntikan SQL, dan menyediakan strategi mitigasi seperti menggunakan pertanyaan parameter dan pengesahan input.

Apakah tahap pengasingan urus niaga yang berlainan dalam SQL (baca yang tidak komited, baca bacaan yang komited, berulang, bersiri)? Apakah tahap pengasingan urus niaga yang berlainan dalam SQL (baca yang tidak komited, baca bacaan yang komited, berulang, bersiri)? Mar 13, 2025 pm 01:56 PM

Artikel ini membincangkan Tahap Pengasingan Transaksi SQL: Baca tidak komited, baca bacaan yang komited, berulang, dan bersiri. Ia mengkaji kesan mereka terhadap konsistensi dan prestasi data, dengan menyatakan bahawa pengasingan yang lebih tinggi memastikan konsistensi yang lebih besar tetapi MA

Apakah sifat asid transaksi dalam SQL? Apakah sifat asid transaksi dalam SQL? Mar 13, 2025 pm 01:54 PM

Artikel ini membincangkan sifat asid (atomik, konsistensi, pengasingan, ketahanan) dalam urus niaga SQL, penting untuk mengekalkan integriti data dan kebolehpercayaan.

Bagaimanakah saya mematuhi Peraturan Privasi Data (GDPR, CCPA) menggunakan SQL? Bagaimanakah saya mematuhi Peraturan Privasi Data (GDPR, CCPA) menggunakan SQL? Mar 18, 2025 am 11:22 AM

Artikel membincangkan menggunakan SQL untuk pematuhan GDPR dan CCPA, yang memberi tumpuan kepada pengabaian data, permintaan akses, dan penghapusan automatik data yang sudah lapuk. (159 aksara)

Bagaimanakah saya mengamankan pangkalan data SQL saya terhadap kelemahan biasa seperti suntikan SQL? Bagaimanakah saya mengamankan pangkalan data SQL saya terhadap kelemahan biasa seperti suntikan SQL? Mar 18, 2025 am 11:18 AM

Artikel ini membincangkan mendapatkan pangkalan data SQL terhadap kelemahan seperti suntikan SQL, menekankan pernyataan yang disediakan, pengesahan input, dan kemas kini tetap.

Bagaimanakah saya melaksanakan pembahagian data dalam SQL untuk prestasi dan skalabiliti? Bagaimanakah saya melaksanakan pembahagian data dalam SQL untuk prestasi dan skalabiliti? Mar 18, 2025 am 11:14 AM

Artikel membincangkan pelaksanaan pembahagian data dalam SQL untuk prestasi dan skalabiliti yang lebih baik, kaedah perincian, amalan terbaik, dan alat pemantauan.

See all articles