Spezifische Index Features für den Entity Framework Core SQL Server-AnbieterIndex features specific to the Entity Framework Core SQL Server provider

Auf dieser Seite werden die Index Konfigurationsoptionen beschrieben, die für den SQL Server-Anbieter spezifisch sind.This page details index configuration options that are specific to the SQL Server provider.

ClusteringClustering

Gruppierte Indizes sortieren und speichern die Datenzeilen in der Tabelle oder Sicht basierend auf ihren Schlüsselwerten.Clustered indexes sort and store the data rows in the table or view based on their key values. Wenn Sie den richtigen gruppierten Index für die Tabelle erstellen, kann die Geschwindigkeit Ihrer Abfragen erheblich verbessert werden, da die Daten bereits in der optimalen Reihenfolge angeordnet sind.Creating the right clustered index for your table can significantly improve the speed of your queries, as data is already laid out in the optimal order. Pro Tabelle kann nur ein gruppierter Index vorhanden sein, da die Datenzeilen nur in einer Reihenfolge gespeichert werden können.There can be only one clustered index per table, because the data rows themselves can be stored in only one order. Weitere Informationen finden Sie in der SQL Server-Dokumentation zu gruppierten und nicht gruppierten Indizes.For more information, see the SQL Server documentation on clustered and non-clustered indexes.

Standardmäßig wird die Primärschlüssel Spalte einer Tabelle implizit durch einen gruppierten Index gestützt, und alle anderen Indizes sind nicht gruppiert.By default, the primary key column of a table is implicitly backed by a clustered index, and all other indexes are non-clustered.

Sie können einen Index oder Schlüssel so konfigurieren, dass er wie folgt gruppiert wird:You can configure an index or key to be clustered as follows:

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

Hinweis

SQL Server unterstützt nur einen gruppierten Index pro Tabelle, und der Primärschlüssel ist standardmäßig gruppiert.SQL Server only supports one clustered index per table, and the primary key is by default clustered. Wenn Sie einen gruppierten Index für eine nicht Schlüssel Spalte erstellen möchten, müssen Sie den Schlüssel explizit als nicht gruppierten Schlüssel festlegen.If you'd like to have a clustered index on a non-key column, you must explicitly make your key non-clustered.

FüllfaktorFill factor

Hinweis

Dieses Feature wurde in EF Core 5.0 eingeführt.This feature was introduced in EF Core 5.0.

Die Füllfaktor Option Index wird für die Feinabstimmung der Speicherung und Leistung von Indexdaten bereitgestellt.The index fill-factor option is provided for fine-tuning index data storage and performance. Weitere Informationen finden Sie in der SQL Server-Dokumentation zum Füllfaktor.For more information, see the SQL Server documentation on fill factor.

Sie können den Füllfaktor eines Indexes wie folgt konfigurieren:You can configure an index's fill factor as follows:

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

Online ErstellungOnline creation

Die Online-Option ermöglicht gleichzeitigen Benutzern den Zugriff auf die zugrunde liegenden Tabellen-oder gruppierten Indexdaten und alle zugehörigen nicht gruppierten Indizes während der Indexerstellung, sodass Benutzer die zugrunde liegenden Daten weiterhin aktualisieren und Abfragen können.The ONLINE option allows concurrent user access to the underlying table or clustered index data and any associated nonclustered indexes during index creation, so that users can continue to update and query the underlying data. 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.When you perform data definition language (DDL) operations offline, such as building or rebuilding a clustered index; these operations hold exclusive locks on the underlying data and associated indexes. Weitere Informationen finden Sie in der SQL Server-Dokumentation der Online Index Option.For more information, see the SQL Server documentation on the ONLINE index option.

Sie können einen Index mit der Online-Option wie folgt konfigurieren:You can configure an index with the ONLINE option as follows:

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