PDA

View Full Version : نحوه اجرای Paging در SQL



Kia_MLS
چهارشنبه 28 آذر 1397, 17:47 عصر
با سلام
یکی از مشکلاتی که در پروژه های بزرگ با حجم داده بسیار زیاد باهاش روبرو هستم، نحوه اجرای Paging در نمایش نتیجه جستجو به کاربر است.
همانطور که روشن است، برای اجرای Paging نیاز به نمایش تعداد محدودی رکورد (مثلا 10 رکورد) از تعداد بسیار زیاد رکوردی که در نتیجه جستجو میتواند بیاید است.
مثلا فرض کنید نتیجه یک Query برابر 1 میلیون رکورد است که ما فقط 10 رکورد را به End User نمایش میدهیم. در صورتی که دکمه رفتن به صفحه بعد را زد از رکورد 11 تا 20 را نمایش میدهیم و ...

مشکل اینجاست که محاسبه تعداد کل رکوردها سربار محاسباتی داره. برای اینکه به کاربر بگیم این 10 رکورد از 1 میلیون رکورده، مجبوریم یک بار Count کل مجموعه رو حساب کنیم.
آیا در این زمینه راه حل بهینه تری وجود دارد؟
مثلا گوگل تعداد کل رکوردها را به صورت تخمینی به کاربر اعلام میکند. پیشنهاد شما چیست؟

hamid_hr
پنج شنبه 29 آذر 1397, 14:12 عصر
برای تعداد رکورد از این کوئری استفاده کنین. جداولی که تعداد رکوردا زیاده خیلی خوب عمل می کنه
select sum([rows]) from sys.partitions where object_id=object_id('TableName') and index_id in (0,1)

Kia_MLS
پنج شنبه 29 آذر 1397, 14:27 عصر
برای تعداد رکورد از این کوئری استفاده کنین. جداولی که تعداد رکوردا زیاده خیلی خوب عمل می کنه
select sum([rows]) from sys.partitions where object_id=object_id('TableName') and index_id in (0,1)

متشکرم. جالب بود.
اما Query روی یک View است که شرط های متفاوت و پیچیده ای هم در قسمت Where داره