PDA

View Full Version : اپتیمایز کردن یک دستور Linq



mohsen-sh
دوشنبه 04 اردیبهشت 1391, 18:27 عصر
من عبارت Linq زیر رو که در آخر گفتم در سایتم دارم

با توجه به اینکه داده های سایت بسیار زیاد هست و در روز حداقل 500 رکورد به این جدول اضافه میشه،وقتی که من درخواست رو به صورتی برای این تابع میفرستم که گروه رو فیلتر نکنه و ازبین خبرهای تمام گروه ها برگردونه(catId) سرعت بسیار پایین میاد

چطور میتونم این دستور رو اپتیمایز کنم

ممنون





q = from c in context.NewsInSubCats
where
c.SubCat.Visible == true && c.SubCatNews.Visible == true && c.SubCatNews.StatusID == 1 &&
(catId != 0 ? (c.SubCatID == catId || c.SubCat.ParentId == catId) : true) &&
(imp == 1 ? c.SubCatNews.ImpStatus == true : true) &&
(!string.IsNullOrEmpty(UserName) ? c.SubCatNews.UsersID == context.Userss.Where(p => p.UserName == UserName).FirstOrDefault().UsersID : true) &&
(newsType == -1 ? c.SubCatNews.NewsTypeID != 2 : (newsType != 0 ? (c.SubCatNews.NewsTypeID == newsType) : true))
orderby c.SubCatNewsID descending
select c.SubCatNews;

mohsen-sh
چهارشنبه 13 اردیبهشت 1391, 09:30 صبح
حل شد
مشکل از این بود که من شرط ها رو از IIF استفاده می کردم

الان برای شرط های متفاوت،از if و else استفاده کردم

نتیجه:
اگر از iif در دستورات sql و linq استفاده کنیم،به ازای هر رکورد چک میشه و تعداد رکورد بالا بره پردازش سنگینی داره