نیک آموز > وبلاگ > SQL Server > مفهوم Pagination در نحوه نمایش اطلاعات (رکوردها)
مفهوم Pagination در نحوه نمایش اطلاعات (رکوردها)

مفهوم Pagination در نحوه نمایش اطلاعات (رکوردها)

نوشته شده توسط: تیم فنی نیک آموز
تاریخ انتشار: ۱۶ مهر ۱۴۰۴
آخرین بروزرسانی: 16 مهر 1404
زمان مطالعه: 5 دقیقه
۰
(۰)

فارغ از اینکه برنامه‌نویس باشید یا نه، در صورتی که در دنیای وب و شبکه‌های اجتماعی حضور دارید، از قابلیت Pagination به وفور استفاده می‌کنید. زمانی که برای دیدن پست‌های جدید در شبکه‌های اجتماعی نظیر لینکدین یا اینستاگرام، صفحه را اسکرول می‌کنید یا زمانی که برای یافتن نتایج خاصی در جستجوی گوگل از صفحات دیگری استفاده می‌کنید، مفهوم Pagination در پشت صحنه در حال اجرا است؛ اما اگر برنامه‌نویس هستید، این مفهوم جزء مفاهیم کلیدی در برنامه‌نویسی بک‌اند (یا همان پشت صحنه) است. در این مقاله به طور کامل با این مفهوم آشنا شده و نشان میدهیم چطور در SQL Server این مفهوم رو در قالب کوئری پیاده‌سازی کنیم. با من همراه باشید.

Pagination چیست؟

جواب این سوال در شکل زیر است، به پایین شکل نگاه کنید و به اعدادی که زیر این شکل است دقت کنید؛ اگر نتیجه خود را در صفحه اول پیدا نکنید، به صفحه ۲ رفته و آن را مشاهده می‌کنید. این اعداد یا در واقع صفحات همان Pagination است.

 

شکل بالا نمایش Pagination در یک مثال واقعی است؛ امّا برای درک و پیاده‌سازی مفهوم Pagination، به جزئیات بیشتری نیازی داریم.

شکل زیر را در نظر بگیرید. فرض کنید تعداد رکوردهای یک جدول در دیتابیس ۳۵۰ رکورد است. ما قصد داریم این تعداد را در قالب صفحات ۵ تایی نشان دهیم، به طوری که مثلاً اگر وارد صفحه ۱ شدیم، رکورد ۱ تا ۵ را ببینیم. اگر وارد صفحه ۲ شدیم، رکورد ۶ تا ۱۰ و الی آخر. با کلیک روی شماره هر صفحه، «فقط» رکوردهای مختص همان صفحه نمایش داده می‌شود، با این تکنیک نیاز نیست کل رکوردهای یک جدول واکشی شود، و صرفه جویی قابل توجهی در منابع و زمان ایجاد خواهد شد.

مفهوم Pagination

کاربرد Pagination

این مفهوم در دنیای وب و اپلیکیشن، کاربرد گسترده دارد و ما به وفور آن را ملاحظه و استفاده می‌کنیم، اما چرا به این قابلیت نیاز است؟ اولین و اصلی‌ترین دلیل، استفاده بهینه از منابع هست؛ مثلاً زمانی که کاربر وارد یک سایت خرید می‌شود و قصد مشاهده لیست محصولات را دارد، ابتدا ۵ محصول ابتدایی را مشاهده می‌کند. برای مشاهده ۵ محصول بعدی فقط کافیست وارد صفحه ۲ شود یا در بعضی از اپلیکیشن‌ها صفحه را به سمت پایین اسکرول کند. حال اگر قصد داشته باشیم محصولات بعدی رو ببینیم، کافیه وارد صفحات بعدی بشیم یا صفحه را اسکرول کنیم.

با این روش، در هر صفحه فقط تعداد محصولات (رکوردهای) مربوط به همان صفحه واکشی می‌شود؛ چرا این کار را می‌کنیم؟! به خاطر لود کمتر روی دیتابیس! در نظر داشته باشید واکشی و هندل کردن تعداد رکوردهای جدولی با ۲۰ هزار عدد چه فرقی با واکشی  ۵ عدد رکورد دارد؟ با توجه به مفهوم بالا، شکل زیر را در نظر بگیرید؛ ما با درخواست مشاهده صفحه ۲، فقط رکوردهای ۶ تا ۱۰ را واکشی و به کاربر نشان می‌دهیم. کل مفهوم Pagination (یا صفحه بندی) همین است!

کاربرد Pagination

پیاده‌سازی Pagination

  1. برای پیاده‌سازی Pagination نیاز به چندین پارامتر است که این پارامترها را بر حسب نیاز طبق الگوریتم زیر به دست می‌آوریم:
  2. ابتدا تعداد کل رکوردها را در جدول (یا کوئری) به دست می‌آوریم. در مثال بالا، تعداد کل رکوردهای ما ۳۵۰ می‌باشد.
  3. تعداد نمایش رکورد در هر صفحه را مشخص میکنیم، این تعداد بر حسب نیاز و به دلخواه می‌تواند انتخاب شود. در مثال بالا، این تعداد ۵ رکورد در هر صفحه است.
  4. تعداد صفحات از دو پارامتر بالا و توسط فرمول زیر به دست می‌آید.
  5. تعداد رکورد در هر صفحه / تعداد کل رکوردها = تعداد صفحات => 70 = 350 / ۵

همانطور که ملاحظه می‌کنید، تعداد صفحات در مثال بالا با توجه به تعداد رکوردها و تعداد نمایش در هر صفحه برابر با ۷۰ صفحه به دست آمده است.

۴– با استفاده از فرمول زیر، اندیس شروع رکوردی که باید واکشی شود را به دست می‌آوریم. این مقدار به From یا Offset در ادبیات کوئری معروف است؛ یعنی مثلاً اگر من صفحه ۳ را انتخاب کنم (با فرض ۵ رکورد در هر صفحه)، اندیس شروع طبق فرمول زیر به دست می‌آید:

From = (pageNumber - 1) * countRecord

From = (3 - 1) * 5 = 10


 

در دیتابیس SQL Server، اندیس از ۰ شروع می‌شود؛ به این نکته دقت نمایید.

۶. اندیس پایان در واقع همان تعداد رکورد در هر صفحه است؛ مثلاً زمانی که قصد واکشی رکوردهای صفحه ۳ را داریم، اندیس شروع برابر ۱۰ بوده و سپس به تعداد ۵ رکورد (بعد از اندیس ۱۰) واکشی انجام می‌دهیم.

نکات مهم پیاده‌سازی Pagination

  1. در اغلب موارد، حاصل تقسیم تعداد کل رکوردها بر تعداد نمایش یک عدد ثابت نیست. لذا جهت به دست آوردن عدد صحیح، این عدد باید به سمت بالا گرد شود. مثلاً ما تعداد ۵.۵ صفحه نداریم، این عدد باید به سمت بالا یعنی ۶ گرد شود.
  2. در سایت‌های مختلف، ممکن است فرمول متفاوت‌تری هم ببینید که مستقیم به آدرس شروع اندیس در دیتابیس ربط دارد.
  3. در SQL Server، مقدار From یا همان Offset از صفر شروع می‌شود، دقیقاً مثل اندیس آرایه‌ها در اکثر زبان‌های برنامه نویسی. بنابراین وقتی بخوایم ۱۰ رکورد اول را نمایش دهیم، باید بگویم از ۰ به مقدار ۱۰ تا واکشی کن.
  4. مفهوم Pagination مختص نوع دیتابیس خاصی نیست و در تمامی دیتابیس‌ها یا حتی دیتاست‌ها وجود داره و یک مفهوم کلی است؛ لذا ممکن است Syntax آن در دیتابیس‌های مختلف، کمی متفاوت باشد.
  5. در دیتابیس SQL Server، برای استفاده از این مفهوم حتماً باید رکوردها بر اساس یک فیلد خاص مرتب شده باشند. لذا در کوئری ما حتماً ORDER BY خواهیم داشت.


مشاهده کامل‌ترین و بروزترین آموزش sql server در نیک آموز


نحوه اعمال Pagination در کوئری SQL Server

ساختار یک کوئری برای به دست آوردن محدوده خاص رکوردها، طبق نگارش زیر است:

SELECT field_1, field_2, field_3, …

FROM table_name

ORDER BY id

OFFSET @From ROWS

FETCH NEXT @CountRecord ROWS ONLY

GO

اگر قصد داشته باشیم مقادیر به صورت پارامتر در اختیار ما قرار بگیرد، کافیست متغیرهای مورد نیاز را به کوئری پاس داده و سپس آن را اجرا کنیم. کوئری زیر، یک مثال کاربردی از مفهوم Pagination را نشان می‌دهد:

DECLARE @From int

DECLARE @CountAllRecord int;

DECLARE @CountRecord int = 5;

DECLARE @PageNumber int = 3;


SET @From = ((@PageNumber - 1) * @CountRecord)


SELECT *

FROM [NikamoozDB].[dbo].[Products]

ORDER BY ProductID

OFFSET @From ROWS

FETCH NEXT @CountRecord ROWS ONLY

GO

 

در مثال فوق از دیتابیس NikamoozDB استفاده شده است. همانطور که ملاحظه می‌کنید، تعداد نمایش رکورد در هر صفحه ۵ در نظر گرفته شده است و ما درخواست نمایش صفحه ۳ را داریم؛ لذا خروجی باید رکوردهای ۱۱ تا ۱۵ را به ما نمایش دهد. (عدد شروع اندیس را فراموش نکنید!)؛ خروجی کوئری فوق مطابق با شکل زیر است:

نحوه اعمال Pagination در کوئری SQL Server

سخن پایانی

 با استفاده از مفهوم Pagination ما قادر به مدیریت تعداد نمایش رکوردها در هر صفحه در سمت فرانت و مدیریت منابع در سمت پس زمینه (یا همان BackEnd) یک برنامه هستیم. اگر سایت یا برنامه ما از این مفهوم استفاده نکند، تبعات بدی ایجاد خواهد شد. فکر کنید کاربر هنگام لود سایت، با ۱۰۰۰ رکورد مواجه شود، چه حس بدی به ایشان دست خواهد داد. با نیک آموز همراه باشید.

چه رتبه ای می‌دهید؟

میانگین ۰ / ۵. از مجموع ۰

اولین نفر باش

title sign
دانلود مقاله
مفهوم Pagination در نحوه نمایش اطلاعات (رکوردها)
فرمت PDF
۵ صفحه
حجم ۱.۱ مگابایت
دانلود مقاله
دوره معماری نرم افزار پیشرفته
title sign
معرفی نویسنده
تیم فنی نیک آموز
مقالات
411 مقاله توسط این نویسنده
محصولات
0 دوره توسط این نویسنده
تیم فنی نیک آموز
title sign
دیدگاه کاربران

دانلود رایگان: آموزش SQL Server

هر روز یک ویدئو آموزشی رایگان برای شما ایمیل خواهد شد!

پاپ آپ | SQL Server

  • این قسمت برای اهداف اعتبارسنجی است و باید بدون تغییر باقی بماند.