آموزش index در EF Core

تهران آی تی / برنامــه نویــسـی / آموزش index در EF Core

آموزش index در EF Core

در دنیای نرم‌افزار و پایگاه‌داده، عملکرد (Performance) حرف اول را می‌زند. اگر با Entity Framework Core کار می‌کنید، قطعاً با مفهوم ایندکس (Index) برخورد کرده‌اید یا به‌زودی برخورد خواهید کرد. ایندکس یکی از مهم‌ترین ابزارهایی‌ست که به برنامه کمک می‌کند کوئری‌ها را سریع‌تر اجرا کند. درآموزش index در EF Core و Asp.Net Core بررسی می‌کنیم که ایندکس چیست، در چه روابطی کاربرد دارد، چرا باید نام‌گذاری شود و چه تاثیری بر جستجوها (Search) دارد. با آموزش index در EF Core با ما همراه باشید.

ایندکس چیست و چه کاربردی دارد؟

ایندکس ساختاری در دیتابیس است. که با هدف افزایش سرعت جستجو و بازیابی اطلاعات طراحی شده. بدون ایندکس، دیتابیس برای یافتن یک رکورد باید همه ردیف‌ها را بررسی کند (Table Scan). که بسیار کند است. اما با وجود ایندکس، پایگاه‌داده می‌تواند خیلی سریع و مستقیم به رکورد برسد.

در Entity Framework Core، ایندکس‌ها (Indexes) نقش بسیار مهمی در بهینه‌سازی عملکرد کوئری‌ها دارند. ایندکس در پایگاه داده باعث می‌شود جستجوها و عملیات‌های فیلتر (مانند WHERE یا ORDER BY) سریع‌تر انجام شوند.

نکات مهم در مورد ایندکس‌ها

  • ایندکس روی کلید اصلی (Primary Key) و کلید خارجی (Foreign Key) به‌صورت خودکار ساخته می‌شود.
  • ایندکس‌ها سرعت خواندن را بالا می‌برند ولی ممکن است سرعت نوشتن (Insert/Update/Delete) را کمی کاهش دهند.
  • ایندکس روی فیلدهایی که زیاد تغییر می‌کنند (مانند LastLoginDate) باید با دقت استفاده شود.
  • ایندکس زیاد باعث سنگینی دیتابیس و کاهش سرعت نوشتن می‌شود.
  • ایندکس فقط زمانی مفید است که روی ستون‌هایی باشد که در کوئری‌ها زیاد استفاده می‌شوند (مثلاً در WHERE, ORDER BY, JOIN).

چه زمانی ایندکس نزنیم؟

  • روی فیلدهایی که مرتب تغییر می‌کنند (مثل تاریخ ویرایش)
  • روی فیلدهایی با داده‌های کاملاً یکتا که کمتر فیلتر می‌شوند
  • وقتی تعداد زیادی ایندکس باعث افت سرعت درج یا حذف می‌شود

تعریف index در EF Core

EF Core از طریق Fluent API امکان تعریف ایندکس را فراهم کرده است.

نکته مهم : در حال حاضر (EF Core 9)، Data Annotation مستقیمی برای ایندکس وجود ندارد. یعنی نمی‌توان با Attributes مثل [Index] این کار را انجام داد (در EF6 امکان‌پذیر بود اما در EF Core حذف شده است).

  • ایندکس ساده

modelBuilder.Entity<User>()
.HasIndex(u => u.Email);

  • ایندکس ترکیبی

modelBuilder.Entity<Order>()
.HasIndex(o => new { o.CustomerId, o.ProductId });

نام‌گذاری index در EF Core

اگرچه EF Core به صورت خودکار نامی برای ایندکس ایجاد می‌کند، بهتر است نام‌گذاری را دستی انجام دهید. چرا؟

  • افزایش خوانایی کد و migration
  • جلوگیری از تداخل نام در پروژه‌های بزرگ
  • سازگاری با قواعد naming دیتابیس
  • امکان حذف یا مدیریت دقیق‌تر ایندکس در Migration

modelBuilder.Entity<User>()
.HasIndex(u => u.Email)
.HasDatabaseName("Index_Email");

تعریف ایندکس یکتا – Unique Index

گاهی اوقات یک ستون در جدول Database نباید مقدار تکراری داشته باشد. به‌عنوان مثال، هر کاربر باید ایمیل منحصربه‌فردی داشته باشد. برای این کار باید از ایندکس یکتا (Unique Index) استفاده کرد.

modelBuilder.Entity<User>()
.HasIndex(u => u.Email)
.IsUnique();

جستجو کنید
دسترسی سریع
دسته ها

طراحی و پیاده سازی پروژه های طراحی سایت دانشجویی

انجام، اجرا و طراحی پروژه های طراحی سایت برای دانشجویان با HTML CSS PHP ASP.NET JAVA و ... با کمترین هزینه. برای مشاهده نمونه کارها و یا دریافت مشاوره رایگان از تیم طراحی سایت تهران آی تی با ما در تماس باشید. ما بهترین پروژه های طراحی سایت را با حداقل هزینه برای شما طراحی میکنیم - مشاوره رایگان 09121486770

مــشاوره و مشاهده نمونه کارها

مطالب مرتبط

لطفا از مطالب مرتبط با این پست دیدن فرمایید

جــذاب های هفته

از پربازدیدترین مطالب تهران آی تی در هفته ای که گذشت دیدن فرمایید

باورکردنی نیست فقط با 300 هزار تومان

طراحی سایت شما + طراحی اپلیکیشن هدیه و رایگان
این یک حراج است در مدت زمان محدود - شرکت های زیادی سایت های ارزان طراحی میکنند اما آیا کیفیت لازم را دارا هستند؟ طراحی سایت ارزان به همراه اپلیکیشن رایگان هدیه برای اولین بار توسط تهران آی تی مخصوص سازمان ها و کسب و کار های کوچک و بزرگ و حتی جدید تیم طراحی سایت تهران آی تی در کنار شماست تا شناخته شوید - مشاوره رایگان 09121486770

مــشاوره و مشاهده نمونه کارها

پشتیبانی 24 ساعته

تیم تهران آی تی در هفت روز هفته و 24 ساعت روز آماده پاسخ گویی به سوالات کاربران و ارائه مشاره رایگان میباشد