【问题标题】:Clustered index ordered by DESC in Entity Framework Core 6 code-firstEntity Framework Core 6 代码优先中由 DESC 排序的聚集索引
【发布时间】:2021-09-09 22:05:11
【问题描述】:

我有一个名为 Log 的 Microsoft SQL Server 表,其中存储了大量的日志条目。典型的查询是获取过去几天、几周或几个月的日志行。

所以我了解到,在写入日志条目时的时间戳上的聚集索引将是查询表的巧妙解决方案。简单来说,通过时间戳上的聚集索引,表本身在该列上有点排序,并且查询速度很快。

但我不明白如何使用 Entity Framework Core 代码优先的降序创建聚集索引。

这是我当前的代码,似乎可以正确创建索引,但它使用 ASC 排序。

modelBuilder.Entity<LogEntryEntity>()
            .HasKey(c => c.LogEntryId)
            .IsClustered(false);

modelBuilder.Entity<LogEntryEntity>()
            .HasIndex(c => c.LogTimestamp)
            .HasDatabaseName("LogEntryClusteredIndex")
            .IsClustered(true);

现在,我看到一些 SO 帖子,据我所知,这是一个已知问题,解决起来并不容易。但我想知道这是否是过时的信息和/或是否有人有任何关于如何将排序更改为 DESC 的提示。如果上面的代码是正确的呢?

我正在使用 Entity Framework Core 6.0.0-preview.7

【问题讨论】:

    标签: c# entity-framework-core .net-6.0


    【解决方案1】:

    但我不明白如何首先使用 Entity Framework Core 代码创建聚集索引 DESC。

    您可以使用Custom Migration Operation

    但是为什么要切换索引顺序呢?插入或查询应该不会更快。

    【讨论】:

    • 感谢您的回复。我认为如果表格按 DESC 排序会快很多。例如,如果我想获取过去 24 小时插入的行。这些行在其 DESC 时位于表的开头,但在其 ASC 时位于表的末尾。
    猜你喜欢
    • 2021-05-04
    • 1970-01-01
    • 2020-04-29
    • 2017-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    相关资源
    最近更新 更多