Entity Framework - Índice

Un índice es una estructura de datos en disco que se basa en tablas y vistas. Los índices hacen que la recuperación de datos sea más rápida y eficiente, en la mayoría de los casos. Sin embargo, sobrecargar una tabla o vista con índices podría afectar de manera desagradable el rendimiento de otras operaciones como inserciones o actualizaciones.

  • La indexación es la nueva característica en el marco de la entidad donde puede mejorar el rendimiento de su aplicación Code First al reducir el tiempo requerido para consultar los datos de la base de datos.

  • Puede agregar índices a su base de datos usando el Index atributo y anular el valor predeterminado Unique y Clustered configuraciones para obtener el índice que mejor se adapte a su escenario.

Echemos un vistazo al siguiente código en el que se agrega el atributo Index en la clase 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; }

}

La clave creada anteriormente no es única ni agrupada. Hay sobrecargas disponibles para anular estos valores predeterminados:

  • Para convertir un índice en un índice agrupado, debe especificar IsClustered = true

  • Del mismo modo, también puede convertir un índice en un índice único especificando IsUnique = true

Echemos un vistazo al siguiente código C # donde un índice está agrupado y es único.

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

El atributo de índice se puede utilizar para crear un índice único en la base de datos. Sin embargo, esto no significa que EF podrá razonar sobre la unicidad de la columna cuando se trata de relaciones, etc. Esta característica generalmente se conoce como soporte para "restricciones únicas".