Entity Framework - indeks

Indeks to struktura danych na dysku oparta na tabelach i widokach. W większości przypadków indeksy sprawiają, że pobieranie danych jest szybsze i wydajniejsze. Jednak przeciążenie tabeli lub widoku indeksami może niekorzystnie wpłynąć na wydajność innych operacji, takich jak wstawianie lub aktualizacje.

  • Indeksowanie to nowa funkcja w strukturze jednostek, w której można poprawić wydajność aplikacji Code First, skracając czas wymagany do wykonywania zapytań dotyczących danych z bazy danych.

  • Możesz dodawać indeksy do bazy danych za pomocą rozszerzenia Index atrybut i nadpisz wartość domyślną Unique i Clustered ustawienia, aby uzyskać indeks najlepiej dostosowany do Twojego scenariusza.

Przyjrzyjmy się poniższemu kodowi, w którym atrybut Index jest dodawany w klasie Course dla CourseID.

public partial class Course {

   public Course() {
      this.Enrollments = new HashSet<Enrollment>();
   }

   [Index]
   public int CourseID { get; set; }
   public string Title { get; set; }
	
   public int Credits { get; set; }
   public byte[] VersionNo { get; set; }
	
   public virtual ICollection<Enrollment> Enrollments { get; set; }

}

Klucz utworzony powyżej jest nieunikalny i nieklastrowy. Dostępne są przeciążenia, które mogą zastąpić te wartości domyślne -

  • Aby indeks był indeksem klastrowym, musisz określić IsClustered = true

  • Podobnie można również uczynić indeks indeksem unikatowym, określając IsUnique = true

Przyjrzyjmy się poniższemu kodowi C #, w którym indeks jest klastrowy i unikalny.

public partial class Course {

   public Course() {
      this.Enrollments = new HashSet<Enrollment>();
   }

   [Index(IsClustered = true, IsUnique = true)]
   public int CourseID { get; set; }
   public string Title { get; set; }
	
   public int Credits { get; set; }
   public byte[] VersionNo { get; set; }
	
   public virtual ICollection<Enrollment> Enrollments { get; set; }
}

Atrybut indeksu może służyć do tworzenia unikatowego indeksu w bazie danych. Nie oznacza to jednak, że EF będzie w stanie wnioskować o wyjątkowości kolumny, gdy ma do czynienia z relacjami itp. Ta cecha jest zwykle określana jako obsługa „unikalnych ograniczeń”.