มีหลายวิธีในการสืบค้นเพจ และฉันจะเข้าร่วมที่นี่
มีการตั้งค่า Set Rowcount ใน SQL Server ซึ่งหมายความว่าการประมวลผลคำสั่งจะหยุดการประมวลผลคำสั่งหลังจากตอบสนองต่อจำนวนแถวที่ระบุ เราสามารถใช้คุณลักษณะนี้เพื่อให้บรรลุประสิทธิภาพสูงในระดับแถวนับสิบล้าน ตารางข้อมูล แบบสอบถามแบบแบ่งหน้าประสิทธิภาพ เรามาพูดถึงวิธีการนำไปใช้กันก่อน:
1. สมมติว่ามีรหัสฟิลด์คีย์หลัก (ประเภทจำนวนเต็ม) ในตารางที่ได้รับการจัดทำดัชนี เราจะดึงข้อมูลสำหรับการเพจตามฟิลด์นี้
2. เราใส่ขนาดหน้าใน @PageSize
3. เราใส่หมายเลขหน้าปัจจุบันใน @CurrentPage
4. จะเลื่อนตัวชี้บันทึกไปที่แถวเริ่มต้นของข้อมูลที่เราต้องการดึงอย่างรวดเร็วได้อย่างไร นี่คือกุญแจสำคัญ! ด้วย Set RowCount เราสามารถนำมันไปใช้ได้อย่างง่ายดาย
5. ถ้าเราเลื่อนตัวชี้บันทึกไปที่แถวที่จุดเริ่มต้นของข้อมูลที่เราต้องการดึงได้สำเร็จ แล้วบันทึกค่าของฟิลด์ ID ของบันทึกในแถวนั้น จากนั้นใช้ Top และเงื่อนไข เราจะได้ค่าอย่างง่ายดาย หน้าข้อมูลที่ระบุ แน่นอนว่าด้วย Set RowCount เรายังใช้ Top อยู่หรือไม่
มาดูกันว่า Set Rowcount สามารถช่วยเราได้อย่างไร:
Declare @ID int
Declare @MoveRecords int
--@CurrentPage และ @PageSize เป็นพารามิเตอร์ขาเข้า
ตั้งค่า @MoveRecords=@CurrentPage * @PageSize+1
-- สองบรรทัดต่อไปนี้ทำให้สามารถเลื่อนไปยังแถวข้อมูลที่เราต้องการดึงได้อย่างรวดเร็ว และบันทึก ID
ตั้งค่าการนับแถว @MoveRecords
เลือก @ID=ID จาก Table1 เรียงลำดับตาม ID
ตั้งค่า Rowcount @PageSize
--ฉันเกลียดการใช้ * เพื่อลดปัญหา แต่เพื่อความสะดวกในการอธิบาย ฉันจะใช้มันชั่วคราว
เลือก * จากตารางที่ 1 โดยที่ ID>=@ID เรียงลำดับตาม ID
ตั้งค่าจำนวนแถว 0
คุณสามารถลองได้ ในตารางที่มีบันทึก 1,000W คุณสามารถเปลี่ยนหน้าเป็นหน้า 100 ได้อย่างรวดเร็ว (100 รายการต่อหน้า) แล้วดูว่าเร็วแค่ไหน!
ที่มา: Nanfeng BLOG
http://name-lh.cnblogs.com/archive/2006/03/08/346059.html