سلام خسته نباشید
من تو کنترلر 3 تا جدول رو با دستورات لینک join کردم و ویک سری شرط ها رواعمال کردم :
[HttpPost] [AjaxOnly] public ActionResult Index(int start, int end, int pageid = 1) { try { if (start < end) { UserRepository UR = new UserRepository(); var user = UR.Where(p => p.UserName == User.Identity.Name).Single(); int senfID = (int)user.AsnafId; string province = user.Province; IndexCustomerViewModel Model = new IndexCustomerViewModel(); Distribution_SystemEntities db = new Distribution_SystemEntities(); IEnumerable<H_Index_ArticleViewModel> mod = from UA in db.User_Article join Art in db.Articles on UA.ArticleId equals Art.id join Us in db.Users on UA.UserId equals Us.id where (Us.Roles == "Supplier" && Us.Province == province && Us.AsnafId == senfID && UA.ArticleCount > 0 && UA.Price != null && UA.Price >= start && UA.Price <= end && Art.Showing == true && Art.Secret == false ) select new H_Index_ArticleViewModel { article = Art, user_article = UA, UserRoles = Us.Roles }; mod = (from element in mod group element by element.article into groups select groups.OrderBy(p => p.user_article.Price).FirstOrDefault()).OrderBy(p => p.user_article.Price); var skip = (pageid - 1) * 24; ViewBag.pageid = pageid; var count = mod.Count(); ViewBag.ArticleCount = count; ViewBag.pageCount = ((count % 24) == 0) ? (count / 24) : (count / 24) + 1; if (count > 0) { if (ViewBag.pageCount >= pageid) { Model.artlist = mod.Skip(skip).Take(24); return Json(new JsonData { Html = this.RenderPartialToString("_IndexPartial", Model.artlist), Success = true }); } else { return Json(new JsonData { Script = MessageBox.Show("خطا! لطفا دوباره سعی کنید.", MessageType.Error).Script, Success = false }); } } else { return Json(new JsonData { Html = "", Script = MessageBox.Show("هیچ موردی یافت نشد.", MessageType.Error).Script, Success = true }); } } else { return Json(new JsonData { Script = MessageBox.Show("خطا! لطفا دوباره سعی کنید.", MessageType.Error).Script, Success = false }); } } catch { return Json(new JsonData { Script = MessageBox.Show("خطا! لطفا دوباره سعی کنید.", MessageType.Error).Script, Success = false }); } }
این کد مربوط به اکشن موردنظر هست که به صورت ajax کار میکنه و شماره صفحه (pageid) و محدوده قیمت ( start , end ) رو میگیره و بر اساس اون رکورد هارو فیلتر میکنه و نمایش میده
ولی کند عمل میکنه ، با اینکه تعداد رکورد های دیتابیس هم زیاد نیس (حداکثر 50 تا رکورد) ،
از ویژوال 2013 و .net 4.5 و sql server 2008 استفاده میکنم ،فک کنم کوئری که زدم زیاد جالب نیس ، آیا کوئری که زدم مشکل داره؟
لطفا راهنمایی کنید، چیکار کنم که سرعت لود افزایش پیدا کنه ؟
سرعت را باید وقتی سایت آنلاین شد بررسی کنید
اگر سایت آنلاین هست لینکش رو بدید بررسی کنیم
خودتون کدهاتون رو باید بررسی کنید
ما نمیتونیم روی این کدها نظر بدیم
اگر میبیندی خیلی کند هست باید از یه برنامه نویس با تجربه بخواهید کدهاتون رو Rafactor کنه
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)