pagination

การดึงข้อมูลจำนวนมากๆ จากฐานข้อมูล 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 ในการดึงข้อมูลจากฐานข้อมูล โดยสามารถนำไปประยุกต์ใช้ได้ในหลายๆ ภาษา และระบบฐานข้อมูลส่วนใหญ่ก็จะมีการทำที่คล้ายๆ กัน