کندی نمایش اطلاعات با ردیف های زیاد در انتیتی فریم ورک (EF Core)
قصد دارم اطلاعات یک جدول شامل حدود 10 میلیون رکورد رو در پروژه خودم با Asp.net Core نمایش بدم. ولی لود اطلاعات با کندی صورت میگیره و برای لحظاتی سایت حالت هنگ به خودش میگیره. چه راه حلی برای نمایش اطلاعات با تعداد ردیف های زیاد در انتیتی فریم ورک (Entity Framework Core) پیشنهاد می کنید ؟
کند شدن نمایش اطلاعات با حجم زیاد در Asp.net core
چند تا راه حل به شما میگم که امیدوارم به درد شما بخوره.
-
استفاده از دستور Take در انتیتی فریم ورک
راه حل اول استفاده از دستور take هست. توسط این دستور شما می تونید تعداد مشخصی از ردیف ها رو از دیتابیس فراخوانی کنید و نمایش بدید. قطعا کاربر شما در لحظه به 10 میلیون رکورد نیازی نداره. بنابراین چه لزومی هست که 10 میلیون رکورد رو واکشی کنید. شما می تونید مثلا 1000 رکورد آخر رو واکشی کنید و نمایش بدید. حالا کاربر اگر به هر رکورد دیگه ای نیاز داشته باشه با جستجو می تونه رکورد مورد نظرش رو پیدا کنه. (دقت کنید در هر بار جستجو هم حداکثر 1000 رکورد واکشی میشه و سرعت پروژه افت نمیکنه.)
var query = _context.users.ToList().Take(1000);
این راه حل بنظرم بهترین راه حل در خیلی از موارد باشه.
- استفاده از قابلیت های IEnumerable و IQueryable
توی انتیتی فریم ورک دو تا دستور به نام IEnumerable و IQueryable داریم که برای واکشی اطلاعات از دیتابیس استفاده میشن. دستور IQueryable دستورات انتیتی فریم ورک رو میبره و داخل خود Sql Server اجرا میکنه و فقط نتیجه رو برمیگردونه و از این رو سرعت بهتری داره. توصیه میشه حتما این لینک رو مطالعه کنید. (تفاوت بین IEnumerable و IQueryable)
var query = _context.users.ToList().IQueryable();
- استفاده از Dapper
dapper یک ORM بسیار سبک و سریع هست که اجازه میده دستورات شما به راحتی در Sql مثل یه SP اجرا بشن و سرعت بالایی رو براتون به ارمغان میارن. از این ORM میتونید برای کار با داده های خیلی بزرگ هم استفاده کنید و سرعت لود اطلاعات افزایش چشمگیری داره. بنابراین راه حل سوم شما هم استفاده از Dapper هست.
نکته : راه حل های تخصصی تری هم برای کار با داده های بزرگ هست ولی برای پروژه شما که آماده هم هست همین روش ها معقول تره.
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- نمایش صفحه در پنجره جدید با کلیک روی لینک (تگ a) در Asp
- افزودن مقادیر به صورت دستی به List دریافت شده از ریپازیتوری
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2