PlusMagi's Blog By Pitt Phunsanit Database Keyset Pagination คืออะไร? คู่มือการทำ Cursor-based Pagination สำหรับ API ประสิทธิภาพสูง

Keyset Pagination คืออะไร? คู่มือการทำ Cursor-based Pagination สำหรับ API ประสิทธิภาพสูง

Keyset Pagination คืออะไร? คู่มือการทำ Cursor-based Pagination สำหรับ API ประสิทธิภาพสูง

ในโลกของการพัฒนา Web และ Mobile Application การแสดงผลข้อมูลจำนวนมากอย่างเป็นหน้า ๆ หรือที่เรียกว่า “Pagination” เป็นสิ่งที่หลีกเลี่ยงไม่ได้ แต่เมื่อระบบของเราเริ่มเติบโตและต้องจัดการกับชุดข้อมูลขนาดใหญ่หลายล้านรายการ วิธีการ Paginate แบบดั้งเดิมโดยใช้ Offset เช่น LIMIT X OFFSET Y มักจะกลายเป็นคอขวดด้านประสิทธิภาพ โดยเฉพาะอย่างยิ่งเมื่อผู้ใช้งานต้องการเข้าถึงหน้าที่ไกลออกไปเรื่อยๆ

ปัญหาของ Traditional Offset Paging

Offset Paging ทำงานบนหลักการนับแถว จากจุดเริ่มต้นไปยังตำแหน่งที่เรากำหนด หากเราขอข้อมูล หน้าที่ 1,000 รายการ ระบบฐานข้อมูลจะต้องทำการประมวลผลเพื่อ ‘กระโดด’ ข้ามบันทึกทั้งก่อนหน้า เพื่อหาว่า Record ที่ 10,001 อยู่ตรงไหน กระบวนการนี้ทำให้เกิดภาระหนัก (Heavy Load) ต่อ Database Engine เพราะมันจำเป็นต้องมีการ Scans พื้นที่ไม่เกี่ยวข้อง ทำให้ความเร็วในการโหลดลดลงอย่างเห็นได้ชัด เมื่อค่า `OFFSET` มีตัวเลขกำกับมากขึ้นเท่าไร ปัญหาก็จะรุนแรงขึ้นเท่านั้น นี่คือเหตุผลสำคัญที่นักพัฒนามืออาชีพจึงหันมาให้ความสนใจกับการทำ Keyset Pagination แทน.

Keyset/Cursor-based คืออะไร? หลักการทำงานเบื้องหลังระบบ API ประสิทธิภาพสูง

Keyset หรือ Cursor-based Pagination ไม่ใช่แค่การบอกจำนวนรายการที่จะแสดง แต่เป็นการระบุ *สถานะ* ของรายการสุดท้ายที่คุณได้รับมาก่อนหน้านี้ ดังนั้นแทนที่จะใช้