نیک آموز > وبلاگ > SQL Server > مفهوم Pagination در نحوه نمایش اطلاعات (رکوردها) مفهوم Pagination در نحوه نمایش اطلاعات (رکوردها) SQL Server نوشته شده توسط: تیم فنی نیک آموز تاریخ انتشار: ۱۶ مهر ۱۴۰۴ آخرین بروزرسانی: 16 مهر 1404 زمان مطالعه: 5 دقیقه ۰ (۰) فارغ از اینکه برنامهنویس باشید یا نه، در صورتی که در دنیای وب و شبکههای اجتماعی حضور دارید، از قابلیت Pagination به وفور استفاده میکنید. زمانی که برای دیدن پستهای جدید در شبکههای اجتماعی نظیر لینکدین یا اینستاگرام، صفحه را اسکرول میکنید یا زمانی که برای یافتن نتایج خاصی در جستجوی گوگل از صفحات دیگری استفاده میکنید، مفهوم Pagination در پشت صحنه در حال اجرا است؛ اما اگر برنامهنویس هستید، این مفهوم جزء مفاهیم کلیدی در برنامهنویسی بکاند (یا همان پشت صحنه) است. در این مقاله به طور کامل با این مفهوم آشنا شده و نشان میدهیم چطور در SQL Server این مفهوم رو در قالب کوئری پیادهسازی کنیم. با من همراه باشید. Pagination چیست؟ جواب این سوال در شکل زیر است، به پایین شکل نگاه کنید و به اعدادی که زیر این شکل است دقت کنید؛ اگر نتیجه خود را در صفحه اول پیدا نکنید، به صفحه ۲ رفته و آن را مشاهده میکنید. این اعداد یا در واقع صفحات همان Pagination است. شکل بالا نمایش Pagination در یک مثال واقعی است؛ امّا برای درک و پیادهسازی مفهوم Pagination، به جزئیات بیشتری نیازی داریم. شکل زیر را در نظر بگیرید. فرض کنید تعداد رکوردهای یک جدول در دیتابیس ۳۵۰ رکورد است. ما قصد داریم این تعداد را در قالب صفحات ۵ تایی نشان دهیم، به طوری که مثلاً اگر وارد صفحه ۱ شدیم، رکورد ۱ تا ۵ را ببینیم. اگر وارد صفحه ۲ شدیم، رکورد ۶ تا ۱۰ و الی آخر. با کلیک روی شماره هر صفحه، «فقط» رکوردهای مختص همان صفحه نمایش داده میشود، با این تکنیک نیاز نیست کل رکوردهای یک جدول واکشی شود، و صرفه جویی قابل توجهی در منابع و زمان ایجاد خواهد شد. کاربرد Pagination این مفهوم در دنیای وب و اپلیکیشن، کاربرد گسترده دارد و ما به وفور آن را ملاحظه و استفاده میکنیم، اما چرا به این قابلیت نیاز است؟ اولین و اصلیترین دلیل، استفاده بهینه از منابع هست؛ مثلاً زمانی که کاربر وارد یک سایت خرید میشود و قصد مشاهده لیست محصولات را دارد، ابتدا ۵ محصول ابتدایی را مشاهده میکند. برای مشاهده ۵ محصول بعدی فقط کافیست وارد صفحه ۲ شود یا در بعضی از اپلیکیشنها صفحه را به سمت پایین اسکرول کند. حال اگر قصد داشته باشیم محصولات بعدی رو ببینیم، کافیه وارد صفحات بعدی بشیم یا صفحه را اسکرول کنیم. با این روش، در هر صفحه فقط تعداد محصولات (رکوردهای) مربوط به همان صفحه واکشی میشود؛ چرا این کار را میکنیم؟! به خاطر لود کمتر روی دیتابیس! در نظر داشته باشید واکشی و هندل کردن تعداد رکوردهای جدولی با ۲۰ هزار عدد چه فرقی با واکشی ۵ عدد رکورد دارد؟ با توجه به مفهوم بالا، شکل زیر را در نظر بگیرید؛ ما با درخواست مشاهده صفحه ۲، فقط رکوردهای ۶ تا ۱۰ را واکشی و به کاربر نشان میدهیم. کل مفهوم Pagination (یا صفحه بندی) همین است! پیادهسازی Pagination برای پیادهسازی Pagination نیاز به چندین پارامتر است که این پارامترها را بر حسب نیاز طبق الگوریتم زیر به دست میآوریم: ابتدا تعداد کل رکوردها را در جدول (یا کوئری) به دست میآوریم. در مثال بالا، تعداد کل رکوردهای ما ۳۵۰ میباشد. تعداد نمایش رکورد در هر صفحه را مشخص میکنیم، این تعداد بر حسب نیاز و به دلخواه میتواند انتخاب شود. در مثال بالا، این تعداد ۵ رکورد در هر صفحه است. تعداد صفحات از دو پارامتر بالا و توسط فرمول زیر به دست میآید. تعداد رکورد در هر صفحه / تعداد کل رکوردها = تعداد صفحات => 70 = 350 / ۵ همانطور که ملاحظه میکنید، تعداد صفحات در مثال بالا با توجه به تعداد رکوردها و تعداد نمایش در هر صفحه برابر با ۷۰ صفحه به دست آمده است. ۴– با استفاده از فرمول زیر، اندیس شروع رکوردی که باید واکشی شود را به دست میآوریم. این مقدار به From یا Offset در ادبیات کوئری معروف است؛ یعنی مثلاً اگر من صفحه ۳ را انتخاب کنم (با فرض ۵ رکورد در هر صفحه)، اندیس شروع طبق فرمول زیر به دست میآید: From = (pageNumber - 1) * countRecord From = (3 - 1) * 5 = 10 در دیتابیس SQL Server، اندیس از ۰ شروع میشود؛ به این نکته دقت نمایید. ۶. اندیس پایان در واقع همان تعداد رکورد در هر صفحه است؛ مثلاً زمانی که قصد واکشی رکوردهای صفحه ۳ را داریم، اندیس شروع برابر ۱۰ بوده و سپس به تعداد ۵ رکورد (بعد از اندیس ۱۰) واکشی انجام میدهیم. نکات مهم پیادهسازی Pagination در اغلب موارد، حاصل تقسیم تعداد کل رکوردها بر تعداد نمایش یک عدد ثابت نیست. لذا جهت به دست آوردن عدد صحیح، این عدد باید به سمت بالا گرد شود. مثلاً ما تعداد ۵.۵ صفحه نداریم، این عدد باید به سمت بالا یعنی ۶ گرد شود. در سایتهای مختلف، ممکن است فرمول متفاوتتری هم ببینید که مستقیم به آدرس شروع اندیس در دیتابیس ربط دارد. در SQL Server، مقدار From یا همان Offset از صفر شروع میشود، دقیقاً مثل اندیس آرایهها در اکثر زبانهای برنامه نویسی. بنابراین وقتی بخوایم ۱۰ رکورد اول را نمایش دهیم، باید بگویم از ۰ به مقدار ۱۰ تا واکشی کن. مفهوم Pagination مختص نوع دیتابیس خاصی نیست و در تمامی دیتابیسها یا حتی دیتاستها وجود داره و یک مفهوم کلی است؛ لذا ممکن است Syntax آن در دیتابیسهای مختلف، کمی متفاوت باشد. در دیتابیس 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 ما قادر به مدیریت تعداد نمایش رکوردها در هر صفحه در سمت فرانت و مدیریت منابع در سمت پس زمینه (یا همان BackEnd) یک برنامه هستیم. اگر سایت یا برنامه ما از این مفهوم استفاده نکند، تبعات بدی ایجاد خواهد شد. فکر کنید کاربر هنگام لود سایت، با ۱۰۰۰ رکورد مواجه شود، چه حس بدی به ایشان دست خواهد داد. با نیک آموز همراه باشید. چه رتبه ای میدهید؟ میانگین ۰ / ۵. از مجموع ۰ اولین نفر باش دانلود مقاله مفهوم Pagination در نحوه نمایش اطلاعات (رکوردها) فرمت PDF ۵ صفحه حجم ۱.۱ مگابایت دانلود مقاله معرفی نویسنده مقالات 411 مقاله توسط این نویسنده محصولات 0 دوره توسط این نویسنده تیم فنی نیک آموز معرفی محصول مسعود طاهری دوره ۳ در ۱ آموزش Performance Tuning در SQL Server 6.700.000 تومان مقالات مرتبط ۰۲ آبان SQL Server ابزار Database Engine Tuning Advisor تیم فنی نیک آموز ۱۵ مهر SQL Server معرفی Performance Monitor ابزار مانیتورینگ SQL Server تیم فنی نیک آموز ۱۱ مهر SQL Server راهنمای جامع مانیتورینگ بکاپ ها در SQL Server تیم فنی نیک آموز ۰۸ مهر SQL Server Resource Governor چیست؟ آشنایی با نحوه پیکربندی و اهمیت های آن تیم فنی نیک آموز دیدگاه کاربران لغو پاسخ دیدگاه نام و نام خانوادگی ایمیل ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم. موبایل برای اطلاع از پاسخ لطفاً مرا با خبر کن ثبت دیدگاه Δ