このページでは、SQL Server プロバイダーに固有のインデックス構成オプションについて詳しく説明します。
クラスタリング
クラスター化インデックスは、テーブルまたはビュー内のデータ行をそのキー値に基づいて並べ替え、格納します。 テーブルに適切なクラスター化インデックスを作成すると、データが最適な順序で既にレイアウトされているため、クエリの速度が大幅に向上します。 データ行自体は 1 つの順序でしか並べ替えられないので、1 つのテーブルに設定できるクラスター化インデックスは 1 つだけです。 詳細については、 クラスター化インデックスと非クラスター化インデックスに関する SQL Server のドキュメントを参照してください。
既定では、テーブルの主キー列はクラスター化インデックスによって暗黙的にサポートされ、他のすべてのインデックスは非クラスター化されます。
クラスター化するインデックスまたはキーは、次のように構成できます。
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>().HasIndex(b => b.PublishedOn).IsClustered();
}
注
SQL Server では、テーブルごとに 1 つのクラスター化インデックスのみがサポートされ、主キーは既定でクラスター化されます。 非キー列にクラスター化インデックスを作成する場合は、キーを明示的に非クラスター化する必要があります。
フィルファクター
インデックスのデータストレージとパフォーマンスを微調整するためのインデックスフィルファクターオプションが用意されています。 詳細については、 FILL FACTOR に関する SQL Server のドキュメントを参照してください。
インデックスのフィル ファクターは、次のように構成できます。
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();
}
.NET