Share via


Entity Framework Core SQL Server 提供者特有的索引功能

此頁面詳細說明 SQL Server 提供者特定的索引組態選項。

叢集

叢集索引將資料表或檢視中的資料列依其索引鍵值排序與儲存。 為數據表建立正確的叢集索引可以大幅提升查詢的速度,因為資料已以最佳順序配置。 因為資料列本身只能以一種順序排序,所以每個資料表只能有一個叢集索引。 如需詳細資訊,請參閱 叢集和非叢集索引 的 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();
}