次の方法で共有


Entity Framework Core SQL Server プロバイダーに固有のインデックス機能

このページでは、SQL Server プロバイダーに固有のインデックス構成オプションについて説明します。

クラスタリング

クラスター化インデックスは、テーブルまたはビュー内のデータ行をそのキー値に基づいて並べ替え、格納します。 テーブルに対して適切なクラスター化インデックスを作成すると、データが既に最適な順序でレイアウトされているので、クエリの速度が大幅に向上します。 データ行自体は 1 つの順序でしか並べ替えられないので、1 つのテーブルに設定できるクラスター化インデックスは 1 つだけです。 詳細については、クラスター化インデックスと非クラスター化インデックスに関する SQL Server のドキュメントを参照してください。

既定では、テーブルの主キー列は暗黙的にクラスター化インデックスによってサポートされ、他のすべてのインデックスは非クラスター化されます。

クラスター化するインデックスまたはキーは、次のように構成できます。

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

Note

SQL Server では、テーブルごとに 1 つのみのクラスター化インデックスがサポートされ、既定では主キーがクラスター化されます。 非キー列にクラスター化インデックスを作成する場合は、明示的にキーを非クラスター化する必要があります。

FILL FACTOR

インデックスのデータ ストレージとパフォーマンスを微調整できるように、インデックス FILL FACTOR オプションが用意されています。 詳細については、FILL FACTOR に関する SQL Server のドキュメントを参照してください。

インデックスの FILL FACTOR は、次のように構成できます。

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

オンライン作成

ONLINE オプションを使用すると、基になるテーブルまたはクラスター化インデックス データと、インデックスの作成時に関連付けられた非クラスター化インデックスに、ユーザーが同時にアクセスできます。これにより、ユーザーは基になるデータの更新とクエリを続行できます。 クラスター化インデックスの構築や再構築などのデータ定義言語 (DDL) 操作をオフラインで実行するときは、これらの操作により、基になるデータや関連付けられたインデックスに排他ロックがかけられます。 詳細については、ONLINE インデックス オプションに関する SQL Server のドキュメントを参照してください。

ONLINE オプションを使用してインデックスを構成するには、次のようにします。

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