相关疑难解决方法(0)

每个SQL Server外键都应该有匹配的索引吗?

为SQL Server数据库中的每个外键创建索引是一种好习惯吗?

sql t-sql sql-server

64
推荐指数
4
解决办法
4万
查看次数

如何阻止 EF Core 索引所有外键

正如Entity Framework Indexing ALL foreign key columns 等问题中所述,EF Core 似乎自动为每个外键生成一个索引。这对我来说是一个合理的默认值(让我们不要在这里进行意见战......),但在某些情况下,这只是浪费空间并减慢插入和更新的速度。我如何根据具体情况预防它?

我不想完全关闭它,因为它利大于弊;我不希望有手动进行配置,所有这些指标我想。我只是想在特定的FK上阻止它。

相关的问题:EF 文档中的任何地方都提到了自动创建这些索引的事实吗?我在任何地方都找不到它,这可能是我找不到如何禁用它的原因?

有人肯定会质疑我为什么要这样做......所以为了节省时间,链接问题的操作员在评论中给出了一个很好的例子:

例如,我们有一张People桌子和一张Addresses桌子。该 People.AddressIDFK是由EF索引,但我只从开始 People行和搜索Addresses记录; 我从来没有找到 Addresses一行然后在该People.AddressID列中搜索匹配的记录。

entity-framework ef-core-2.0

9
推荐指数
1
解决办法
5567
查看次数

实体框架代码第一外键添加索引

我在EF 6代码中有简单的表定义 - 首先是简单的外键.

public class Address
{
        /// <summary>
        /// Gets or sets the id.
        /// </summary>
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        [Column(Order = 1)]
        public int Id { get; set; }

         /// <summary>
        /// Gets or sets the town.
        /// </summary>
        public virtual Town Town { get; set; }

        /// <summary>
        /// Gets or sets the paf address town id.
        /// </summary>
        [Column(Order = 2)]
        public int TownId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

创建表时,它正在创建外键和索引.我想知道为什么,因为这样的索引通常非常低效,而对于大型数据库,它会导致很多问题.那么为什么它只创建该索引而不是外键.以及如何默认禁用此类索引创建.

c# entity-framework ef-code-first

6
推荐指数
1
解决办法
4695
查看次数