ورود

View Full Version : سوال در مورد paging



bebakhsh
سه شنبه 09 تیر 1394, 12:23 عصر
با سلام
من روالی نوشتم که تعداد رکوردهای زیادی رو باید برگردونه برای تسریع در نمایش نتیجه، از paging استفاده کردم.
سوالی که از حضور دوستان دارم این هست که من نیاز دارم که در بالای گزارش، جمع کل یکی از ستون ها رو همواره نمایش بدم.
روال من بصورت pagingنوشته شده که کم کم رکوردها رو بیاره حالا چطور جمع کل یکی از ستون ها رو از همون اول بتونم محاسبه کنم و نمایش بدم؟
لطفا راهنمایی بفرمایید
متشکرم

sempay_ninjutsu
یک شنبه 04 مرداد 1394, 11:00 صبح
با سلام من روالی نوشتم که تعداد رکوردهای زیادی رو باید برگردونه برای تسریع در نمایش نتیجه، از paging استفاده کردم. سوالی که از حضور دوستان دارم این هست که من نیاز دارم که در بالای گزارش، جمع کل یکی از ستون ها رو همواره نمایش بدم. روال من بصورت pagingنوشته شده که کم کم رکوردها رو بیاره حالا چطور جمع کل یکی از ستون ها رو از همون اول بتونم محاسبه کنم و نمایش بدم؟ لطفا راهنمایی بفرمایید متشکرم

این جمع ستون ها که میگید همواره نمایش بدم یعنی چی!!!!!

یعنی بعد از اینکه رکوردات برگشت میخای جمع یکی از ستون هاتو بندازی ...خب این به روش pagin که استفاده کردی ربط داره ..روش پیچینگتو بگید تا به جزئیات توضیح بدم براتون....یا برای میتوینی یه ستون بزاری که جمع اون تک ستونو با استفاده از Sum بدست بیاری.....

یا شما یه ستون دارین که جمع کل دیتابیست بدون در نظر گرفتن پیجینگ است خب اون به راهی که استفاده کرید بستگی داره..

موفق باشید

tooraj_azizi_1035
یک شنبه 04 مرداد 1394, 14:22 عصر
سلام
روش Window Function:
مي تونيد با اين دستور جمع كل ستوني خاص را فارغ از تعداد ركورد بازگشتي بدست آوريد:

Select Column1, Column2, SUM(SUM(Column3)) OVER() Total FROM YourTable


والبته اگر با Sub Query بنويسيد Performance بهتري خواهيد داشت:


Select Column1, Column2, (Select SUM(Column3) FROM YourTable) Total FROM YourTable


حالا اگر خروجي ركورد بالا Paging شود مقدار Total همان خوهد بود.

sempay_ninjutsu
جمعه 09 مرداد 1394, 10:10 صبح
سلام
روش Window Function:
مي تونيد با اين دستور جمع كل ستوني خاص را فارغ از تعداد ركورد بازگشتي بدست آوريد:

Select Column1, Column2, SUM(SUM(Column3)) OVER() Total FROM YourTable


والبته اگر با Sub Query بنويسيد Performance بهتري خواهيد داشت:


Select Column1, Column2, (Select SUM(Column3) FROM YourTable) Total FROM YourTable


حالا اگر خروجي ركورد بالا Paging شود مقدار Total همان خوهد بود.
اینکار شما در دیتابیس های حجیم باعث کاهش پرفورمنس بشدت خواهد شد..این جمع شما به ازای هر رکورد تکرار خواهد شد ...

tooraj_azizi_1035
جمعه 09 مرداد 1394, 15:30 عصر
در راه حل اول يك work table ايجاد مي شود و سه بار اسكن نه به تعداد همه ركورد ها و در راه دوم هم به ازای هر رکورد محاسبات انجام نمی شود بلکه در کل کوئری فقط یکبار. میشه این رو از پلن اجرا فهمید.
و اینکه اگر راه بهینه تری دارید معرفی کنید.