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ń”.