Indexfunktioner som är specifika för Entity Framework Core SQL Server-providern

Den här sidan beskriver de indexkonfigurationsalternativ som är specifika för SQL Server-providern.

Klustring

Grupperade index sorterar och lagrar dataraderna i tabellen eller vyn baserat på deras nyckelvärden. Att skapa rätt klustrade index för tabellen kan avsevärt förbättra hastigheten för dina frågeställningar, eftersom informationen redan ordnas i optimal ordning. Det kan bara finnas ett grupperat index per tabell, eftersom själva dataraderna bara kan lagras i en ordning. Mer information finns i SQL Server-dokumentationen om klustrade och icke-klustrade index.

Som standardinställning stöds den primära nyckelkolumnen i en tabell implicit av ett klustrat index och alla andra index är icke-klustrade.

Du kan konfigurera ett index eller en nyckel som ska grupperas på följande sätt:

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

Anmärkning

SQL Server stöder endast ett klustrat index per tabell och den primära nyckeln är som standard klustrad. Om du vill ha ett klustrat index på en kolumn som inte är en nyckel, måste du uttryckligen göra din nyckel icke-klustrat.

Fyllningsfaktor

Alternativet indexfyllningsfaktor tillhandahålls för finjustering av lagring och prestanda för indexdata. Mer information finns i SQL Server-dokumentationen om fyllningsfaktor.

Du kan konfigurera ett indexs fyllningsfaktor på följande sätt:

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

Skapa online

Alternativet ONLINE ger samtidig användaråtkomst till den underliggande tabellen eller klustrade indexdata och eventuella associerade icke-grupperade index när index skapas, så att användarna kan fortsätta att uppdatera och köra frågor mot underliggande data. När du utför åtgärder för datadefinitionsspråk (DDL) offline, till exempel skapa eller återskapa ett grupperat index; dessa åtgärder har exklusiva lås på underliggande data och associerade index. Mer information finns i SQL Server-dokumentationen om alternativet ONLINE-index.

Du kan konfigurera ett index med onlinealternativet på följande sätt:

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