Entity Framework - Index

Ein Index ist eine Datenstruktur auf der Festplatte, die auf Tabellen und Ansichten basiert. Indizes machen das Abrufen von Daten in den meisten Fällen schneller und effizienter. Das Überladen einer Tabelle oder Ansicht mit Indizes kann jedoch die Leistung anderer Vorgänge wie Einfügungen oder Aktualisierungen unangenehm beeinträchtigen.

  • Die Indizierung ist die neue Funktion im Entity Framework, mit der Sie die Leistung Ihrer Code First-Anwendung verbessern können, indem Sie die Zeit reduzieren, die zum Abfragen von Daten aus der Datenbank erforderlich ist.

  • Sie können Ihrer Datenbank mithilfe von Indizes hinzufügen Index Attribut und überschreiben Sie die Standardeinstellung Unique und Clustered Einstellungen, um den Index zu erhalten, der am besten zu Ihrem Szenario passt.

Schauen wir uns den folgenden Code an, in dem das Indexattribut in der Kursklasse für CourseID hinzugefügt wird.

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; }

}

Der oben erstellte Schlüssel ist nicht eindeutig und nicht gruppiert. Es sind Überladungen verfügbar, um diese Standardeinstellungen zu überschreiben.

  • Um einen Index zu einem Clustered-Index zu machen, müssen Sie IsClustered = true angeben

  • In ähnlicher Weise können Sie einen Index auch zu einem eindeutigen Index machen, indem Sie IsUnique = true angeben

Schauen wir uns den folgenden C # -Code an, in dem ein Index gruppiert und eindeutig ist.

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; }
}

Das Indexattribut kann verwendet werden, um einen eindeutigen Index in der Datenbank zu erstellen. Dies bedeutet jedoch nicht, dass EF beim Umgang mit Beziehungen usw. über die Eindeutigkeit der Spalte nachdenken kann. Diese Funktion wird normalerweise als Unterstützung für „eindeutige Einschränkungen“ bezeichnet.