Für den SQL Server-Anbieter in Entity Framework Core spezifische Indexfeatures

Auf dieser Seite werden Optionen zur Indexkonfiguration im Detail beschrieben, die speziell für SQL Server-Anbieter vorgesehen sind.

Clustering

Gruppierte Indizes sortieren und speichern die Datenzeilen in der Tabelle oder Sicht basierend auf ihren Schlüsselwerten. Durch die Erstellung des richtigen gruppierten Indexes für Ihre Tabelle lässt sich die Geschwindigkeit Ihrer Abfragen erheblich verbessern, weil die Daten bereits in der optimalen Reihenfolge angezeigt werden. Pro Tabelle kann nur ein gruppierter Index vorhanden sein, da die Datenzeilen nur in einer Reihenfolge gespeichert werden können. Weitere Informationen finden Sie in der SQL Server-Dokumentation zu gruppierten und nicht gruppierten Indizes.

Standardmäßig liegt der Primärschlüsselspalte einer Tabelle implizit ein gruppierter Index zugrunde, und alle übrigen Indizes sind nicht gruppiert.

Sie können einen Index oder Schlüssel wie folgt für die Gruppierung konfigurieren:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Blog>().HasIndex(b => b.PublishedOn).IsClustered();
}

Hinweis

SQL Server unterstützt pro Tabelle nur einen gruppierten Index, und der Primärschlüssel ist standardmäßig gruppiert. Wenn Sie einen gruppierten Index für eine andere Spalte als die Schlüsselspalte verwenden möchten, müssen Sie den Schlüssel explizit als nicht gruppiert festlegen.

Füllfaktor

Die Indexfüllfaktoroption wird zur Optimierung der Speicherung und Leistung von Indexdaten bereitgestellt. Weitere Informationen finden Sie in der SQL Server-Dokumentation zum Füllfaktor.

Sie können den Füllfaktor eines Indexes wie folgt konfigurieren:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Blog>().HasIndex(b => b.PublishedOn).HasFillFactor(10);
}

Onlineerstellung

Die Option ONLINE ermöglicht während der Indexerstellung den gleichzeitigen Benutzerzugriff auf die zugrunde liegende Tabelle oder gruppierten Indexdaten sowie alle zugehörigen nicht gruppierten Indizes, sodass Benutzer die zugrunde liegenden Daten weiterhin aktualisieren und abfragen können. Wenn Sie DDL-Vorgänge (Datendefinitionssprache) wie das Erstellen oder Neuerstellen eines gruppierten Indexes offline ausführen, richten diese Vorgänge exklusive Sperren für die dem Index zugrunde liegenden Daten und damit verbundene Indizes ein. Weitere Informationen finden Sie in der SQL Server-Dokumentation zur Indexoption ONLINE.

Sie können einen Index wie folgt mit der Option ONLINE konfigurieren:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Blog>().HasIndex(b => b.PublishedOn).IsCreatedOnline();
}