Partage via


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

Cette page détaille les options de configuration d’index 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 cluster 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. Pour plus d’informations, consultez la documentation SQL Server sur les index cluster et non cluster.

Par défaut, la colonne clé primaire d'une table est implicitement sauvegardée par un index clusterisé, et tous les autres index sont non-clusterisés.

Vous pouvez configurer un index ou une clé pour qu’il soit regroupé comme suit :

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

Note

SQL Server prend uniquement en charge un index clusterisé par table, et la clé primaire est par défaut clusterisée. Si vous souhaitez avoir un index clusterisé sur une colonne non clé, vous devez explicitement rendre votre clé non clusterisée.

Facteur de remplissage

L’option de facteur de remplissage d’index est fournie pour optimiser le stockage et les performances des données d’index. Pour plus d’informations, consultez la documentation DE SQL Server sur le facteur de remplissage.

Vous pouvez configurer le facteur 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 permet à l’utilisateur simultané d’accéder à la table sous-jacente ou aux données d’index cluster et à tous les index non cluster associés lors de la création de l’index, afin que les utilisateurs puissent continuer à mettre à jour et interroger les données sous-jacentes. Lorsque vous effectuez des opérations de langage de définition de données (DDL) hors connexion, telles que la génération ou la reconstruction d’un index cluster ; ces opérations contiennent des verrous exclusifs sur les données sous-jacentes et les index associés. Pour plus d’informations, consultez la documentation SQL Server sur l’option d’index ONLINE.

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

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