簡體   English   中英

為什么 EF Core 2.1 只為 2 個 FK 添加 1 個索引?

[英]Why does EF Core 2.1 only add 1 index for 2 FKs?

我使用 SQL 服務器 2017 (v14.0.2027.2) 和 EF Core 2.1。

在此代碼上添加遷移后:

public class TblTrack
{
    public long Id { get; set; }
    ...
}

public class TblProduct
{
    public long Id { get; set; }
    ...
}

public class TblProductItem
{
    [Key]
    [Required]
    public long ProductId { get; set; }

    [Key]
    [Required]
    public long TrackId { get; set; }

    // Navigation properties
    public TblProduct Product { get; set; }
    public TblTrack Track { get; set; }
}

Ef Core 僅創建 TrackId 索引

migrationBuilder.CreateIndex(
name: "IX_tbl_ProductItems_TrackId",
table: "tbl_ProductItems",
column: "TrackId");

為什么為TrackId創建索引而不為ProductId創建索引?

為什么為 TrackId 創建索引而不為 ProductId 創建索引?

這實際上是 EF 非常聰明和正確的行為。 TblProductItem 的主鍵是 (ProductId,TrackId)。 因此,您已經有一個支持該外鍵的索引(因為 FK 列是該索引中的前導列)。 只有尾隨 PK 列 (TrackId) 需要單獨的索引來支持外鍵。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM