وقتی برنامهای دارید که پرس وجوها ساختاری مشابه را بار ها در Entity Framework Core اجرا می کند، می توانید با یک بار کامپایل کردن کوئری و اجرای چندین بار آن با پارامترهای مختلف، عملکرد را به طور مکرر افزایش دهید. به عنوان مثال، یک برنامه ممکن است مجبور باشد تمام مشتریان یک شهر خاص را بازیابی کند. شهر در زمان اجرا توسط کاربر در یک فرم مشخص می شود. برای این منظور از Compiled Query ها استفاده می شود.
Compiled Query در EF Core یک نسخه از پیش کامپایل شده یک کوئری LINQ است که برای اجرای سریعت ر در حافظه ذخیره می شود. کامپایل یک کوئری شامل تجزیه و تحلیل درخت عبارت پرس و جو و تبدیل آن به کد اجرایی است. Compiled Query می تواند منجر به بهبود عملکرد، به ویژه برای پرس و جوهای پیچیده یا مکرر شود. پرس و جوهای کامپایل شده را می توان با استفاده از متد EF.CompileQuery در EF Core ایجاد کرد. هنگامی که یک پرس و جو کامپایل شد، می توان آن را چندین بار با ارسال مقادیر پارامترهای مختلف بدون نیاز به کامپایل مجدد اجرا کرد.
Compiled Query عملکرد بیشتری نسبت به پرس و جوهای استاندارد EF دارند، زیرا می توانند از برخی بهینه سازی های اضافی بهره ببرند.
قبل از اینکه EF بتواند پرس و جو را به SQL معتبری که می تواند در پایگاه داده اجرا شود تبدیل کند، باید کوئری را کامپایل کند. پرس و جو کامپایل شده در حافظه کش ذخیره می شود و EF می تواند از آن پرس و جو ذخیره شده مجدد استفاده کند. در برخی شرایط، پرس و جو نیاز به کامپایل مجدد دارد و هزینه های عملکرد اضافی را به همراه دارد.
هنگامی که به طور صریح پرس و جو را با فراخوانی EF.CompileQuery کامپایل می کنیم، می توانیم از برخی تکنیک های بهینه سازی که در زمان اجرا در دسترس نیستند استفاده کنیم.
توجه داشته باشید که پرس و جوهای کامپایل شده فقط عملکرد بخش درون حافظه اجرای یک کوئری EF را بهبود می بخشد. زمان رفت و برگشت و نتایج حاصل از پایگاه داده بیتأثیر باقی میماند.
دلایل مختلفی وجود دارد که ممکن است بخواهید از کوئری های کامپایل شده در EF Core استفاده کنید:
توجه به این نکته مهم است که اگرچه کوئری های کامپایل شده می توانند عملکرد را بهبود بخشند و قابلیت نگهداری کد شما را بالاتر ببرند، اما محدودیت هایی نیز دارند. به عنوان مثال، آنها را نمی توان با پرس و جوهای ایجاد شده به صورت پویا یا با پرس و جوهایی که از اینترفیس IQueryable در EF Core استفاده می کنند، استفاده کرد.
ما در این دوره، نحوه ایجاد و استفاده از Compiled Query ها را در .net7 و EF Core 7 آموزش خواهیم داد و سپس از عمکلرد آن با استفاده از کتابخانه BenchmarkDotNet بنچمارک خواهیم گرفت.
مشاهده ویدیو :
آموزش Compiled Query در EF Core 7 در وب سایت کدسل
youtube
دریافت سورس پروژه آموزش استفاده از CompiledQuery در .Net7 و EF Core 7