Compartir a través de


Características de índice específicas del proveedor de SQL Server de Entity Framework Core

En esta página se detallan las opciones de configuración de índices que son específicas del proveedor SQL Server.

Agrupación en clústeres

Los índices clúster ordenan y almacenan las filas de los datos de la tabla o vista de acuerdo con los valores de la clave del índice. La creación del índice agrupado adecuado para la tabla puede mejorar significativamente la velocidad de las consultas, ya que los datos ya están diseñados en el orden óptimo. Solo puede haber un índice clúster por cada tabla, porque las filas de datos solo pueden estar almacenadas de una forma. Para obtener más información, consulte la documentación de SQL Server sobre los índices agrupados y no agrupados.

De forma predeterminada, la columna de clave principal de una tabla es implícitamente respaldada por un índice agrupado, y todos los demás índices no están agrupados.

Puede configurar un índice o una clave para que estén agrupados de la siguiente manera:

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

Nota:

SQL Server solo admite un índice agrupado por tabla, y la clave principal está agrupada de forma predeterminada. Si quiere tener un índice agrupado en una columna que no es de clave, debe hacer explícitamente que la clave no esté agrupada.

Factor de relleno

Se proporciona la opción de factor de relleno de índices para ajustar el almacenamiento de datos de índice y el rendimiento. Para obtener más información, consulte la documentación de SQL Server sobre el factor de relleno.

Puede configurar el factor de relleno de un índice de la siguiente manera:

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

Creación en línea

La opción EN LÍNEA permite el acceso simultáneo de los usuarios a la tabla subyacente o a los datos del índice agrupado y los índices no agrupados asociados durante la creación del índice, de modo que los usuarios puedan seguir actualizando y consultando los datos subyacentes. Al realizar operaciones DDL (lenguaje de definición de datos) sin conexión, como generar o volver a generar un índice clúster, estas operaciones mantienen bloqueos exclusivos de los datos subyacentes y los índices asociados. Para obtener más información, consulte la documentación de SQL Server sobre la opción de índice EN LÍNEA.

Puede configurar un índice con la opción EN LÍNEA de la siguiente manera:

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