Partager via


Fonctionnalités d’index spécifiques au fournisseur SQL Server Entity Framework Core

Cette page décrit les options de configuration d’index qui sont spécifiques au fournisseur SQL Server.

Clustering

Les index cluster trient et stockent les lignes de données de la table ou la vue en fonction de leurs valeurs de clé. La création de l’index en clusters approprié pour votre table peut améliorer considérablement la vitesse de vos requêtes, car les données sont déjà disposées dans l’ordre optimal. Il ne peut y avoir qu’un index cluster par table car les lignes de données peuvent être stockées dans un seul ordre. Si vous souhaitez obtenir plus d’informations, consultez la documentation SQL Server sur des index en clusters et non cluster.

Par défaut, la colonne de clé primaire d’une table est implicitement sauvegardée par un index en clusters et tous les autres index ne sont pas mis en clusters.

Vous pouvez configurer un index ou une clé à mettre en clusters comme suit :

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

Remarque

SQL Server ne prend en charge qu’un seul index en clusters par table et la clé primaire est par défaut en cluster. Si vous souhaitez avoir un index en clusters sur une colonne non-clé, vous devez explicitement rendre votre clé non en clusters.

Facteur de remplissage

L’option de taux de remplissage d’index est fournie pour optimiser le stockage et les performances des données d’index. Si vous souhaitez obtenir plus d’informations, consultez la documentation de SQL Server sur le taux de remplissage.

Vous pouvez configurer le taux de remplissage d’un index comme suit :

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

Création en ligne

L’option ONLINE (EN LIGNE) permet l’accès simultané des utilisateurs à la table sous-jacente ou aux données d’index en clusters et aux index sans clusters associés lors de la création d’index, afin que les utilisateurs puissent continuer à mettre à jour et interroger les données sous-jacentes. Lorsque vous effectuez des opérations DDL (Data Definition Language) en mode hors connexion, comme la construction ou la reconstruction d'un index cluster, ces opérations posent des verrous exclusifs sur les données sous-jacentes et les index associés. Si vous souhaitez obtenir plus d’informations, consultez la documentation de SQL Server sur l’option d’index EN LIGNE.

Vous pouvez configurer un index avec l’option EN LIGNE comme suit :

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