PDA

View Full Version : بهینه نمودن یک دستور Linq



mohsen-sh
سه شنبه 20 تیر 1391, 04:12 صبح
سلام

من این دستور رو در سایت کارفرمام که Mvc3 و Entity هست رو دارم



SubCatNews = (from c in context.NewsInSubCats
where
(c.SubCat.Visible == true &&
c.SubCatNews.Visible == true &&
c.SubCatNews.StatusID == 1 &&
c.SubCatNews.NewsTypeID != 5 &&
(c.SubCatID == catId || c.SubCat.ParentId == catId))
orderby c.SubCatNews.SubCatNewsID descending
select c.SubCatNews)
.Distinct()
.OrderByDescending(p => p.SubCatNewsID)
.Skip(pageIndex * pageSize)
.Take(pageSize);



در حال حاضر در جدول SubCatNews ،تعداد رکورد به 23 هزار عدد رسیده

این 23 هزار رکورد،برای اختصاص به گروه های موجود در SubCat ،از جدول میانی NewsInSubCats استفاده می کنند.

این دستور در حقیقت داده ها رو با صفحه بندی سفارشی تحول میده

اما مشکل اینجاست که اجرای این دستور داره بیش از حد طول میکشه
یعنی وقتی روی یک گروه کلیک میشه که رکورد های مرتبط با اون گروه بیاد،در بسیاری از موارد با خطای TimeOut از طرف Sql مواجه میشه

میخاستم بدونم آیا این مربوط به اپتیمایز نبودن این دستوره و یا من برای این تعداد رکورد مجبورم به سمت Indexing برم

همچنین باید بگم سایت هام (4 سایت با همین حجم) بر روی یک سرور مجازی با 2 گیگ رم هست

پیشاپیش ممنون از کمکتون