การดึงข้อมูลจำนวนมากๆ จากฐานข้อมูล pagination เป็นสิ่งที่จำเป็นต้องทำเพื่อให้การทำงานของเว็บไซต์ของทำงานได้อย่างมีประสิทธิภาพมากขึ้น
pagination คืออะไร?
pagination คือ การแบ่งข้อมูลออกเป็นหน้าๆ เพื่อลดจำนวนการดึงข้อมูลจากฐานข้อมูลเป็นจำนวนมากๆ ลองนึกดูว่าถ้าเราดึงข้อมูล 6,000 รายการ โดยไม่แบ่งเป็นหน้าข้อมูลจะขนาดใหญ่และใช้เวลานานมากแค่ไหน? งานบางอย่างก็เลี่ยงไม่ได้ที่จำเป็นต้องดึงข้อมูลจำนวนมากๆ แต่การทำ pagination จึงดีที่สุดในการดึงข้อมูลเป็นหน้าๆ
ส่วนประกอบของ Pagination
- lists คือ รายการของข้อมูลที่จะดึงข้อมูลจากฐานข้อมูล
- pageNo คือ หน้าที่จะดึงข้อมูลจากฐานข้อมูล
- pageSize คือ จำนวนข้อมูลที่จะดึงข้อมูลจากฐานข้อมูล
- totalPage คือ จำนวนหน้าทั้งหมดของข้อมูลที่จะดึงข้อมูลจากฐานข้อมูล
- totalItems คือ จำนวนข้อมูลทั้งหมดที่จะดึงข้อมูลจากฐานข้อมูล
ตัวอย่างข้อมูลผู้ใช้งาน
{
"lists": [
{
"id": 1,
"name": "duckyman1",
"email": "ducky1@mail.com"
},
{
"id": 2,
"name": "duckyman2",
"email": "ducky2@mail.com"
}
],
"pageNo": 1,
"pageSize": 2,
"totalPage": 100,
"totalItems": 200
}
วิธีคำนวณในฐานข้อมูล
offset
const offset = (pageNo, pageSize) => {
return (pageNo - 1) * pageSize;
}
limit
const limit = (pageSize) => {
return pageSize;
}
count
SELECT COUNT(*) AS count FROM users
const totalItems = (count) => {
return count;
}
const totalPage = (totalItems, pageSize) => {
return Math.ceil(totalItems / pageSize);
}
lists
SELECT * FROM users LIMIT offset, limit ORDER BY id DESC
นี่ก็เป็นตัวอย่างคร่าวๆ ในการทำ Pagination ในการดึงข้อมูลจากฐานข้อมูล โดยสามารถนำไปประยุกต์ใช้ได้ในหลายๆ ภาษา และระบบฐานข้อมูลส่วนใหญ่ก็จะมีการทำที่คล้ายๆ กัน