Entity Framework Core SQL Server 공급자와 관련된 인덱스 기능
이 페이지에서는 SQL Server 공급자와 관련된 인덱스 구성 옵션에 대해 자세히 설명합니다.
Clustering
클러스터형 인덱스는 해당 키 값을 기반으로 테이블이나 뷰의 데이터 행을 정렬하고 저장합니다. 테이블에 대한 올바른 클러스터형 인덱스를 만들면 데이터가 이미 최적의 순서로 배치되기 때문에 쿼리 속도가 상당히 향상될 수 있습니다. 데이터 행 자체는 한 가지 순서로만 저장될 수 있으므로 테이블당 클러스터형 인덱스는 하나만 있을 수 있습니다. 자세한 내용은 클러스터형 인덱스와 비클러스터형 인덱스에 대한 SQL Server 설명서를 참조하세요.
기본적으로 테이블의 기본 키 열은 클러스터형 인덱스에서 암시적으로 지원되며 다른 모든 인덱스는 비클러스터형입니다.
다음과 같이 인덱스 또는 키를 클러스터되도록 구성할 수 있습니다.
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>().HasIndex(b => b.PublishedOn).IsClustered();
}
참고
SQL Server는 테이블당 하나의 클러스터형 인덱스만 지원하며 기본 키는 기본적으로 클러스터됩니다. 키가 아닌 열에 클러스터형 인덱스를 포함하려면 키를 비클러스터형으로 명시적으로 설정해야 합니다.
채우기 비율
인덱스 채우기 비율 옵션은 인덱스 데이터 스토리지와 성능을 미세 조정하기 위해 제공됩니다. 자세한 내용은 채우기 비율에 대한 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