Entity Framework - Índice

Um índice é uma estrutura de dados em disco baseada em tabelas e visualizações. Os índices tornam a recuperação de dados mais rápida e eficiente, na maioria dos casos. No entanto, sobrecarregar uma tabela ou exibição com índices pode afetar desagradavelmente o desempenho de outras operações, como inserções ou atualizações.

  • A indexação é o novo recurso na estrutura de entidade onde você pode melhorar o desempenho de seu aplicativo Code First reduzindo o tempo necessário para consultar dados do banco de dados.

  • Você pode adicionar índices ao seu banco de dados usando o Index atributo e substitui o padrão Unique e Clustered configurações para obter o índice mais adequado ao seu cenário.

Vamos dar uma olhada no código a seguir, no qual o atributo Index é adicionado na classe Course para CourseID.

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

}

A chave criada acima não é exclusiva, não é agrupada. Existem sobrecargas disponíveis para substituir esses padrões -

  • Para tornar um índice um índice de cluster, você precisa especificar IsClustered = true

  • Da mesma forma, você também pode tornar um índice um índice exclusivo especificando IsUnique = true

Vamos dar uma olhada no código C # a seguir, em que um índice é agrupado e exclusivo.

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

O atributo de índice pode ser usado para criar um índice exclusivo no banco de dados. No entanto, isso não significa que EF será capaz de raciocinar sobre a exclusividade da coluna ao lidar com relacionamentos, etc. Esse recurso é geralmente referido como suporte para “restrições exclusivas”.