قصد دارم اطلاعات یک جدول شامل حدود 10 میلیون رکورد رو در پروژه خودم با Asp.net Core نمایش بدم. ولی لود اطلاعات با کندی صورت میگیره و برای لحظاتی سایت حالت هنگ به خودش میگیره. چه راه حلی برای نمایش اطلاعات با تعداد ردیف های زیاد در انتیتی فریم ورک (Entity Framework Core) پیشنهاد می کنید ؟
چند تا راه حل به شما میگم که امیدوارم به درد شما بخوره.
استفاده از دستور Take در انتیتی فریم ورک
راه حل اول استفاده از دستور take هست. توسط این دستور شما می تونید تعداد مشخصی از ردیف ها رو از دیتابیس فراخوانی کنید و نمایش بدید. قطعا کاربر شما در لحظه به 10 میلیون رکورد نیازی نداره. بنابراین چه لزومی هست که 10 میلیون رکورد رو واکشی کنید. شما می تونید مثلا 1000 رکورد آخر رو واکشی کنید و نمایش بدید. حالا کاربر اگر به هر رکورد دیگه ای نیاز داشته باشه با جستجو می تونه رکورد مورد نظرش رو پیدا کنه. (دقت کنید در هر بار جستجو هم حداکثر 1000 رکورد واکشی میشه و سرعت پروژه افت نمیکنه.)
var query = _context.users.ToList().Take(1000);
این راه حل بنظرم بهترین راه حل در خیلی از موارد باشه.
توی انتیتی فریم ورک دو تا دستور به نام IEnumerable و IQueryable داریم که برای واکشی اطلاعات از دیتابیس استفاده میشن. دستور IQueryable دستورات انتیتی فریم ورک رو میبره و داخل خود Sql Server اجرا میکنه و فقط نتیجه رو برمیگردونه و از این رو سرعت بهتری داره. توصیه میشه حتما این لینک رو مطالعه کنید. (تفاوت بین IEnumerable و IQueryable)
var query = _context.users.ToList().IQueryable();
dapper یک ORM بسیار سبک و سریع هست که اجازه میده دستورات شما به راحتی در Sql مثل یه SP اجرا بشن و سرعت بالایی رو براتون به ارمغان میارن. از این ORM میتونید برای کار با داده های خیلی بزرگ هم استفاده کنید و سرعت لود اطلاعات افزایش چشمگیری داره. بنابراین راه حل سوم شما هم استفاده از Dapper هست.
نکته : راه حل های تخصصی تری هم برای کار با داده های بزرگ هست ولی برای پروژه شما که آماده هم هست همین روش ها معقول تره.
تاریخ :
1403/12/23
- ساعت :
03:14:00 PM
- بازدید :
63
- پاسخ :
1
|
تاریخ :
1403/12/01
- ساعت :
01:07:00 PM
- بازدید :
129
- پاسخ :
0
|
تاریخ :
1403/12/23
- ساعت :
11:21:00 AM
- بازدید :
82
- پاسخ :
1
|
تاریخ :
1399/09/20
- ساعت :
01:21:00 PM
- بازدید :
6779
- پاسخ :
1
|
تاریخ :
1399/11/25
- ساعت :
11:22:00 AM
- بازدید :
3812
- پاسخ :
2
|
تاریخ :
1403/12/19
- ساعت :
11:21:00 PM
- بازدید :
37
- پاسخ :
1
|
تاریخ :
1403/12/18
- ساعت :
07:24:00 PM
- بازدید :
49
- پاسخ :
1
|
تاریخ :
1398/09/06
- ساعت :
09:06:00 PM
- بازدید :
3390
- پاسخ :
1
|
تاریخ :
1399/12/15
- ساعت :
08:08:00 PM
- بازدید :
3548
- پاسخ :
1
|
تاریخ :
1398/10/10
- ساعت :
10:52:00 AM
- بازدید :
2491
- پاسخ :
2
|
تاریخ :
1403/12/23
- ساعت :
03:14:00 PM
- بازدید :
63
- پاسخ :
1
|
تاریخ :
1403/12/24
- ساعت :
06:18:00 PM
- بازدید :
15
- پاسخ :
0
|
تاریخ :
1403/12/01
- ساعت :
01:07:00 PM
- بازدید :
129
- پاسخ :
0
|
تاریخ :
1403/12/23
- ساعت :
11:21:00 AM
- بازدید :
82
- پاسخ :
1
|
تاریخ :
1399/09/20
- ساعت :
01:21:00 PM
- بازدید :
6779
- پاسخ :
1
|
تاریخ :
1401/03/31
- ساعت :
05:57:00 PM
- بازدید :
2307
- پاسخ :
1
|
تاریخ :
1403/12/22
- ساعت :
11:05:00 AM
- بازدید :
117
- پاسخ :
1
|
تاریخ :
1399/11/25
- ساعت :
11:22:00 AM
- بازدید :
3812
- پاسخ :
2
|
تاریخ :
1403/12/19
- ساعت :
11:21:00 PM
- بازدید :
37
- پاسخ :
1
|
تاریخ :
1403/12/20
- ساعت :
12:05:00 AM
- بازدید :
46
- پاسخ :
1
|