Compartilhar via


Recursos de índice específicos para o provedor do SQL Server do Entity Framework Core

Esta página detalha as opções de configuração de índice específicas para o provedor do SQL Server.

Clustering

Os índices clusterizados classificam e armazenam as linhas de dados da tabela ou exibição com base em seus valores de chave. A criação do índice clusterizado correto para sua tabela pode melhorar significativamente a velocidade de suas consultas, pois os dados já estão dispostos na ordem ideal. Pode haver apenas um índice clusterizado por tabela, pois as linhas de dados podem ser classificadas somente em uma única ordem. Para obter mais informações, consulte a documentação do SQL Server sobre índices clusterizados e não clusterizados.

Por padrão, a coluna de chave primária de uma tabela é apoiada implicitamente por um índice clusterizado e todos os outros índices são não clusterizados.

Configure um índice ou chave para ser clusterizado da seguinte maneira:

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

Observação

O SQL Server dá suporte apenas a um índice clusterizado por tabela e a chave primária é clusterizado por padrão. Caso queira ter um índice clusterizado em uma coluna que não seja de chave, você deve explicitamente tornar sua chave não clusterizada.

Fator de preenchimento

A opção de fator de preenchimento de índice é fornecida para ajustar o desempenho e o armazenamento de dados do índice. Para obter mais informações, consulte a documentação do SQL Server sobre o fator de preenchimento.

Configure o fator de preenchimento de um índice da seguinte maneira:

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

Criação online

A opção ONLINE permite acesso simultâneo do usuário à tabela subjacente ou dados de índice clusterizado e a todos os índices não clusterizados associados durante a criação do índice, para que os usuários possam continuar a atualizar e consultar os dados subjacentes. Quando você executa operações de DDL (linguagem de definição de dados) offline, como a compilação ou recompilação de um índice clusterizado, essas operações mantêm bloqueios exclusivos nos dados subjacentes e índices associados. Para obter mais informações, consulte a documentação do SQL Server na opção de índice ONLINE.

Configure um índice com a opção ONLINE da seguinte maneira:

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