PDA

View Full Version : کاهش شدید سرعت لود صفحه در هنگام افزایش اطلاعات



maktab
سه شنبه 07 مرداد 1393, 23:51 عصر
سلام
من برای ارتباط با بانکم از entity framework استفاده میکنم و هیچ مشکلی پیش نیامده. سرعتش هم خوبه.
ولی این بار اومدم و برای تست 8000 تا رکورد در یه جدول قرار دادم ولی الان که میخوام سایت رو بالا بیارم همینطوری صفحه در حالت لود میمونه!
البته در جایی که زیاد از اطلاعات این جدول استفاده نکردم (فرضا فقط تیترش رو بخونم) بعد از گذشت چند دقیقه (باز هم به نسبت قبل خیلی زیاده!) لود میشه و در صفحاتی که از اطلاعات بیشتری استفاده کردم کلا چیزی نمایش داده نمیشه اخطاری هم نمیاد فقط صفحه داره لود میشه!!
تا جایی که اطلاع دارم و مطمئنم Entity Framework رو اگر همراه Linq استفاده کنیم و در آن از امکان صفحه بندی استفاده کنیم این امکان در سطح بانک صورت میگیره و تمام اطلاعات رو واکشی نمیکنه.
نمونه کدی که ازش استفاده کردم این کده:


using (EntitiesSite Entity = new EntitiesSite())
{
var lst = (from P in Entity.News.ToList()
where P.Block == false
orderby P.NewsId descending
select new { P.Title, P.Text }).Skip(0).Take(8).ToList();
}


این رو برای حالت اول استفاده کردم برای حالت دوم هم به همین شکله با این تفاوت که اطلاعات بیشتری از خبر رو فراخوانی میکنم. شرکت هاستی هم که ازش گرفتم از شرکت های پرسرعته پس نمیشه گفت بخاطر هاسته
در کل مگه این کد نمیره و 8 تا ردیف رو میاره؟ پس چرا اینقدر تفاوت وجود داره!!

mo.jalilian
چهارشنبه 08 مرداد 1393, 00:04 صبح
مستقیم روی دیتابیس اجرا میکنید چقدر طول میکشه؟

maktab
چهارشنبه 08 مرداد 1393, 00:24 صبح
مستقیم روی دیتابیس اجرا میکنید چقدر طول میکشه؟

روی لوکال (ویژوال) تست کردم سایت لود میشه ولی کاهش سرعت داره. البته باز به نظرم نباید اینقدر باشه.
روی دیتابیس از طریق لوکال تست کردم که زمان لود رو 1 ثانیه زد.
روی دیتابیس بصورت انلاین تست کردم که اون رو هم در حد یک ثانیه اطلاعات رو اورد.

mo.jalilian
جمعه 10 مرداد 1393, 01:18 صبح
به خاطر order نیست که گذاشتید؟

alighorbanip
جمعه 10 مرداد 1393, 02:33 صبح
.ToList() اولی به خاطر چیه احساس نمیکنید که کوئری دو بار لیست میشه به این صورت وارد کنید


using (var Entity = new EntitiesSite())
{
var lst = (from P in Entity.News
where P.Block == false
orderby P.NewsId descending
select p).Take(8);

ListView.DataSource = lst.ToList();
ListView.DataBind();
}


نتیجه رو بهم بگین